Interceptor 스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다. 둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다. 인터셉터의 흐름은 다음과 같다. HTTP 요청 ->WAS-> 필터 -> 디스패처 서블릿 -> 스프링 인터셉터 -> 컨트롤러 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다. 스프링 인터셉터는 스프링 MVC가 제공하는 기능이기 때문에 결국 디스패처 서블릿 이후에 등장하게 된다. 아래는 인터셉터로 제한을 적용했을 때, 흐름이다. HTTP 요청 -> WA..
의존성 주입 DI는 디자인 패턴으로 크게 다음과 같이 4가지 방법이 있다. 생성자 주입 setter 주입 필드 주입(@Autowired) 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법 생성자 호출 시점에 단 1번만 호출되는 것이 보장된다. 불변, 필수 의존 관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepos..
Servlet Filter 필터는 서블릿이 지원하는 문지기와 같다. 만약 로그인한 회원만 게시판의 글 쓰기, 수정, 삭제 기능을 사용할 수 있다면, 해당 로직마다 로그인을 확인하는 기능을 추가해야 하고, 이 기능이 수정되었다면, 일일이 다 찾아서 수정도 해야 한다. 이러한 공통 관심사는 스프링의 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 필터의 흐름은 다음과 같다. HTTP 요청 -> WAS -> 필터 -> 디스패처 서블릿 -> 컨트롤러필터를 적용하면 필터가 호출 된 다음에 디스패처 서블릿이 호출된다. 그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 된다. /* 이라고 하면 모든 요청에 필터가 적용된다. 아래는..

스프링 메시지 소스 스프링은 기본적인 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하기 위해서는 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, 인터페이스이기 때문에 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록한다. 스프링 메시지 소스 직접 등록 @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-8"); re..
- Total
- Today
- Yesterday
- kotlin
- 백준
- Algorithm
- 알고리즘
- 스프링부트
- 스프링
- 파이썬
- 그리디
- leetcode
- 구현
- 북클럽
- 정렬
- 김영한
- 릿코드
- 인프런
- 데이터베이스
- mysql 8.0
- MySQL
- 자료구조
- Spring
- 리팩토링
- 노마드
- 노마드코더
- 코테
- Real MySQL
- 문자열
- spring boot
- 스프링 부트
- 코틀린
- webflux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |