Spring
-
Spring MVC - 단순 텍스트으로 보낸 HTTP 요청 메시지 조회와 HTTP 응답 메시지 처리(@RequestBody, @ResponseBody)Spring/Spring MVC 2022. 1. 29. 19:41
단순 텍스트으로 보낸 HTTP 요청 메시지 URL에 쿼리 파라미터를 통한 요청 메시지, Form을 통한 HTTP message body에 쿼리 파라미터를 담아 요청하는 방법이 아닌 단순 텍스트으로 message body에 데이터를 직접 담아 요청 메시지를 보낸 경우 해당 데이터들을 어떻게 조회하는지 알아보자. HTTP API에서 주로 사용하며 데이터 형식은 JSON, XML, TEXT가 있다. 보통 JSON을 사용하며 POST, PUT, PATCH 메서드로 요청 메시지를 보낸다. message body를 직접 조회해야 하기 때문에 요청 파라미터와는 달리 @RequestParam, @ModelAttribute를 사용할 수 없다. 단순 텍스트 요청 메시지와 응답 메시지 HttpServletRequest, H..
-
Spring MVC - HTTP 헤더 조회Spring/Spring MVC 2022. 1. 28. 19:29
Web on Servlet Stack (spring.io) Web on Servlet Stack Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com docs.spring.io Web on Servlet Stack (spring.io) Web on Servlet Stack Spring Web MVC is the ..
-
Spring MVC - HTTP API의 요청 매핑 예시Spring/Spring MVC 2022. 1. 28. 18:26
HTTP API 같은 URI에서 HTTP 메서드에 따른 요청 처리를 할 수 있으며 이 방식은 요즘에 많이 쓰는 방식이다. 회원 관리 API 회원 목록 조회 : GET /users 회원 등록 : POST /users 회원 조회 : GET /users/{userId} 회원 수정 : PATCH /users/{userId} 회원 삭제 : DELETE /users/{userId} @Slf4j @RestController @RequestMapping("/users") public class TestController { /** * GET /users */ @GetMapping public String users() { return "get users"; } /** * POST /users */ @PostMappin..
-
Spring MVC - 로깅(Logging) 간단히 알아보자(SLF4J, Logback)Spring/Spring MVC 2022. 1. 28. 16:38
로깅(Logging)이란? 로깅은 정보를 제공하는 일련의 기록인 로그를 생성하도록 시스템을 작성하는 활동을 말한다. 따라서 웹 애플리케이션이 작동하는데 중요 기능이 실행되는 부분에는 적절한 로그를 남겨 시스템 상태/작동 정보를 시간의 경과에 따라 기록하여 사용한다. 저장된 로그는 사용자의 패턴이나 시스템 동작 자체의 분석에 사용될 수 있으며 해킹이나 침입 등의 사고가 발생한 경우 비정상 동작의 기록을 통해 추적을 수행할 수 있도록 돕는다. 우리는 간단하게 System.out.println을 이용하여 입출력 및 변수 값들을 출력하여 로그를 생성할 수 있지만 로그의 양이나 수준을 조절할 수 없고, 출력된 로그를 파일 등에 저장하기도 불편하다. 또한 System.out.println을 자주 이용하다 보면 웹 ..
-
Spring - 스프링 빈의 초기화, 소멸 메서드(생명주기 콜백)Spring/Spring 2022. 1. 25. 16:07
스프링 빈의 초기화, 소멸 메서드(생명주기 콜백) 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 빈 사용 -> 소멸전 콜백 -> 스프링 종료 그런데 위 스프링 빈의 이벤트 라이프 사이클을 보면 초기화 콜백과 소멸전 콜백이 보인다. 둘의 정의를 정의하자면 다음과 같다. 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 이후에 호출 빈에 필요한 데이터들을 필드에 초기화 소멸전 콜백 : 빈이 소멸되기 직전에 호출 왜 빈을 등록할 당시에 초기화를 같이 해주지 않고 빈의 등록과 의존 주입이 끝난 이후에 해줄까? 생성자는 필수 정보(파라미터)를 받고, 메모리를 할당해서 객체를 생성하는 책임을 진다. 초기화는 객체 내부에서 값을 넣어..
-
Spring - 동일 타입의 빈을 모두 주입받을 수 있는 List, MapSpring/Spring 2022. 1. 24. 12:35
같은 타입의 빈 중 필요한 빈을 @Primary, @Qualifier를 통해 주입받아 사용할 수 있었다. 그런데 같은 타입의 빈이 모두 필요한 경우는 어떻게 해야 할까? 지금까지 블로깅 내용을 예로 들어보자. 지금까지 원하는 할인 정책(RateDiscountPolicy, FixDiscountPolicy) 중 필요한 정책을 선택하여 주입받아 사용해 왔다. 그런데 클라이언트가 할인의 종류를 선택할 수 있다고 가정했을 때 이 두 개의 정책 모두 주입받아야 사용해야 할 것이다. 물론 @Qualifier를 이용하여 주입받을 DiscountPolicy 필드를 2개 선언하여 주입할 수 있지만, 만약 할인 정책이 10개, 100개 라면 엄청난 코드 중복이 발생할 것이다. 이를 해결하기 위해 List와 Map을 이용한다..
-
Spring - 동일 타입의 빈이 2개 이상일 경우 의존관계 주입 방법Spring/Spring 2022. 1. 24. 12:32
동일 타입의 빈이 2개 이상일 경우 의존관계 주입 시 오류가 발생 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } ... @Componen..
-
Spring - 다양한 의존관계 주입 방법(생성자 주입, 수정자 주입, 필드 주입)Spring/Spring 2022. 1. 24. 12:31
의존관계 주입 방법 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 생성자 호출 시점에 딱 1번만 호출되는 것을 보장한다. 불변, 필수 의존관계에 사용 불변 : 한번 주입하면 주입된 인스턴스는 변하지 않는 것을 보장 필수 : 주입받는 필드에 final 키워드를 이용함으로써 반드시 주입받아야 되는 것을 보장 @Autowired를 생략해도 자동 주입이 된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discoun..