Cute Hello Kitty Kaoani

WebServer

WebServer/Spring

Kafka Consumer Retry 전략

Spring Kafka Consumer 부분을 맡으면서 예외 상황을 처리하기 위해 Kafka Retry 전략에 대해 알아보았다. 메시지를 소비하는 동안 예상치 못한 오류가 발생할 수 있으며, 이를 적절히 처리하는 로직이 필요하다. 메시지를 반복적으로 재처리하거나, 재처리 후에도 실패하는 메시지를 별도의 토픽으로 관리해야한다. Consumer의 예외 상황을 처리하기 위한 방식으로는 ErrorHandler 방식과 어노테이션 방식 이 있다. ErrorHandler 방식Spring Kafka는 이러한 예외 상황을 처리하기 위해 DefaultErrorHandler 와 BackOff 기능을 제공한다.재시도 간격에 따라 다양한 Backoff 전략이 있다.Fixed Backoff : 일정된 시간 간격으로 재시도하는 전..

WebServer/Spring Boot

[Spring/JPA] Spring Data JPA란?

JPA(Java Persistence API)는 자바를 이용하여 데이터베이스와의 상호 작용을 쉽게 만들어주는 프로그래밍 인터페이스이다. JPA를 사용하면 객체와 관계형 데이터베이스 간의 매핑을 쉽게 처리할 수 있으며, 데이터베이스에서 객체를 저장하고 검색하는 등의 작업을 보다 간편하게 수행할 수 있다. 💡 JPA는 JAVA에서 ORM(Object-Relational Mapping)기술 표준으로 사용하는 인터페이스 모음 JPA를 사용하는 이유 객체 지향적인 방식으로 데이터를 다루면서 데이터베이스를 효과적으로 활용 SQL 쿼리를 직접 작성하는 대신 JPA가 데이터베이스 간의 매핑을 처리 ➜ 개발자가 비즈니스 로직을 구성하는데만 집중 가능 RDB를 변경하더라도 SQL에 의존적이지 않기 때문에 변경 용이 MyB..

WebServer/Spring

[Spring] @RequestBody 와 @ResponseBody

@RequestBody @ResponseBody 는 XML이나 JSON과 같은 메시지 기반의 커뮤니케이션을 위해 사용된다. @ResponseBody가 메서드 레벨에 부여되면 메서드가 리턴하는 객체는 뷰를 통해 결과를 만들어내는 Model로 사용되는 대신, 메시지 Converter를 통해 바로 HTTP 응답의 메시지 본문으로 전환된다. @RequestBody @ResponseBody를 위한 jackson 라이브러리 필요 com.fasterxml.jackson.core jackson-databind 2.14.2 💡 스프링부트에서는 의존성이 자동으로 포함되어 있음. @ResponseBody Controller에서 응답처리를 JSP로 하지 않고 JSON 형식으로 처리가 가능하다. 즉, 자바클래스를 리턴하면 자동..

WebServer/Spring Boot

[스프링부트] JSP 사용하는 SpringBoot MVC

프로젝트 생성 ① 의존성 등록 스프링부트 MVC에서 필요한 web starter 패키지 등록 내장 tomcat이 설치됨 (기본 port는 8080) 스프링부트 mvc에서 기본 화면처리는 JSP가 아니다. ➜ JSP 사용 위해서 의존성 추가 필요 💡 포트번호 변경은 application.propeties에서 server.port=8090 을 통해 변경 org.springframework.boot spring-boot-starter-web org.apache.tomcat.embed tomcat-embed-jasper javax.servlet jstl ② 웹 구조 생성 JSP 사용 시, 명시적으로 폴더 생성해야함 ③ InternalResourceViewResolver 등록 스프링부트에서는 application..

WebServer/Spring Boot

[스프링부트] AOP (Aspect Oriented Programming)

AOP의 자세한 설명은 아래 글 참고 [Spring] AOP (Aspect Oriented Programming) AOP 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 스프링에서는횡단 관심사라고 한다. AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패 gangintheremark.tistory.com 실습 의존성 AOP starter 패키지 등록 필수 org.springframework.boot spring-boot-starter-aop @EnableAspectJAutoProxy 이용 어노테이션을 사용하는 방식이다. @SpringBootApplication @EnableAspectJAutoProxy public class Application { pu..

WebServer/Spring Boot

[스프링부트] I18N 다국어 처리하기

파일명_국가별언어코드.properties 작성 한국어 버전 #shop_ko.properties greeting=안녕하세요 영어 버전 #shop_en.properties greeting=hello application.properties 설정 spring.messages.basename=message/shop spring.messages.encoding=utf-8 # spring.messages.fallback-to-system-locale=false 💡 fallback-to-system-locale = true (default) : 시스템의 locale를 따른다. 💡 fallback-to-system-locale = false : 기본 properties를 실행한다. ① 메인에서 사용 @SpringBoo..

WebServer/Spring Boot

[스프링부트] SpringBoot 개요

Java Spring Boot는 Spring으로 애플리케이션을 만들 때, 쉽고 빠르게 만들 수 있도록 도와주는 프레임워크 스프링 vs 스프링부트 Spring 🌱 Spring Boot🌱 정의 Enterprise Application을 개발하는데 사용되는 오픈소스 경량 프레임워크 REST API 개발에 사용되며, 기존의 스프링 프레임워크 위에 구축 중요기능 Dependency Injection Autoconfiguration 사용방식 설정 파일 작성, 빈 객체 등록, 빈 객체 간의 의존성 설정 간단한 설정과 의존성 처리 설정파일 Bean Configuration XML파일 application.properties 또는 application.yml 이용 목적 느슨하게 결합된 응용프로그램 독립 실행형 응용 프로..

WebServer/Spring

[Spring] Spring 기반의 파일업로드(File Upload)

① 의존성 추가 Apache 에서 제공하는 Commons 기반의 라이브러리 의존성 추가 commons-fileupload commons-fileupload 1.4 commons-io commons-io 2.6 ② 파일 업로드 JSP 작성 comment: file: ③ DTO 작성 type="text"와 type="file" 2개를 한꺼번에 저장하기 위해 UploadDTO 클래스를 작성한다. @AllArgsConstructor @Data public class UploadDTO { String theText; CommonsMultipartFile theFile; } 💡 CommonsMultipartFile 클래스는 파일을 저장하는 핵심 클래스이다. ④ Controller 작성 @Controller publ..

WebServer/Spring

[Spring] MVC 네임스페이스 태그 관련

@MVC 관련 기능을 활용할 때, 다음 두 가지는 필수 지정 HandlerInterceptor 스프링의 HandlerMapping은 HandlerInterceptor를 이용해 Controller가 요청을 처리하기 전과 후에 알맞은 기능을 수행하도록 지원 boolean preHandle(request, response, object): 클라이언트 요청을 Controller에 전달하기 전 호출 void postHandle(request, response, object, mav) : 클라이언트 요청을 처리한 후 호출 void afterCompletion(request, response, object, ex): 뷰를 통해 클라이언트에 응답을 전송한 후 호출 HandlerInterceptor를 구현한 뒤에는 반드..

WebServer/Spring

[Spring] 스프링의 포워드(forward)와 리다이렉트(redirect) + RedirectAttributes

[Servlet] 요청 위임 클라이언트의 요청을 받은 서블릿에서 다른 컴포넌트(서블릿, JSP, html)로 요청을 위임할 수 있다. 직접 요청 받은 서블릿에서 모든 작업을 처리하지 않고 위임한 컴포넌트에서 특정 작업을 처리 gangintheremark.tistory.com 리턴 타입이 String 일 때, 다음과 같은 특별한 키워드를 붙여서 사용할 수 있다. forward : 포워드 방식으로 처리 forward:target redirect : 리다이렉트 방식으로 처리 redirect:target 포워드(forward) 처리 화면 URL 변경 X request scope에 저장된 데이터 target에서 사용 가능 @RequestMapping("/aaa") public String aaa(Model m) ..

WebServer/Spring

[Spring] 스프링 MVC의 Controller

스프링 MVC의 Controller는 다음과 같은 특징이 있다. 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능 GET/POST 전송 방식을 어노테이션으로 처리 가능 @RequestMapping @RequestMapping은 사용자가 요청한 URL 정보를 이용하여 실제 처리되는 메서드를 선택할 수 있다. URL 패턴 @Controller public class TestController { // 💡 매핑값 하나 // http://localhost:8090/app/xxx @RequestMapping(value = "/xxx") public String xxx() { return "main"; } // 💡 매핑값 두 개 // http://localhost:8090/app/xxx2 // ht..

WebServer/Spring

[Spring] Spring MVC 구조와 컴포넌트

Spring MVC 구조 스프링 프레임워크는 MVC2 패턴을 준수한다. MVC2 패턴은 쉽게 말해 로직과 화면을 분리하는 스타일의 개발방식이다. UI코드와 비즈니스 코드를 분리함으로써 종속성을 줄이고 재사용성을 높여 보다 쉬운 유지보수를 확보할 수 있다. MVC2 방식에서 사용자의 Reqeust를 처리하기 위해 주로 Controller를 호출한다. 나중에 View를 교체하더라도 사용자가 호출하는 URL 자체에 변화가 없게 만들어주기 때문이다. 스프링 MVC의 기본 구조는 아래와 같다 ① 사용자의 Request는 Front-Controller인 DispatcherServlet을 통해 처리한다. ② HandlerMapping은 Request의 처리를 담당하는 Controller를 찾는다. @RequestMa..

gangintheremark
'WebServer' 카테고리의 글 목록