@Component, @Service.. 등으로 등록하지 않는 Bean 등록
기술지원 Bean이라고 함
Bean으로 등록하려는 객체를 반환하는 메서드에 @Bean + 그 메서드가 속한 클래스에 @Configuration
Bean이 객체를 가져올 때 검색하는 이름
Bean을 주입받을 때 클래스(타입)을 찾음(1순위)
변수 이름을 찾음(2순위)
클라이언트 웹 브라우저에 쿠키저장소가 존재
클라이언트가 도메인 별로 사용되는 서비스에 필요한 작은 설정 값
쿠키마다 Name-Value, 도메인, 경로, 만료기한이 존재
서버에서 클라이언트와 통신할 때 각 클라이언트의 상태를 식별하기 위한 정보
각 클라이언트의 상태를 저장하므로 클라이언트 ID와 함께 저장됨
http 통신은 비연결통신이므로 세션으로 클라이언트의 연결을 표현
클라이언트에게 건네줄 때는 결국 쿠키로 전달(할 수 밖에), 세션 쿠키
클라이언트 브라우저 종료, 로그아웃, 타임아웃 셋 중 하나를 만족시 세션은 삭제됨
# 클레임기반
# 웹 토큰, Secret Key
# JSON
# 쿠키저장소에 저장(일반적인 방법)
토큰 구성은 Header, Payload, Signature로 구성됨
프로젝트 사용처: 클라이언트가 로그인 요청시 JWT 암호화하여 처리 (세션방법 X)
클라이언트와 서버가 http 통신할 때 서버 가장 바깥부분에서 주고받는 데이터를 원하는 정보로 가공(필터링)한 후 DispatchServlet에게 넘겨준다.
다시 정리하면, 본격적인 애플리케이션 서비스로 들어가기 전에 전처리작업 + 다 끝나고 후처리작업에 활용할 수 있는 기능
예시로 로그인과 같은 인증, 인가기능을 필터로 처리할 수 있겠다.
사용하려면 다음과 같이 Filter 인터페이스를 implement한다.
doFilter() 오버라이딩
코드 예시
@Component
@Order(1)
public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 전처리 로직 작성
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
System.out.print(httpServletRequest.getRequestURI());
chain.doFilter(request, response); // 다음 Filter 로 이동
// 후처리 로직
}
}
chain.doFilter로 필터 체이닝 가능
@Order(1)은 필터 체이닝 순서 1번째, @Order(2), ...