Interceptor Interceptor : 요청에 대한 작업 전/후로 가로챈다. Filter와 다르게 DispatcherServelt이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 Spring context영역 내부에서 controller에 관한 요청과 응답에 대해 처리. HandlerInterceptor 를 구현하여 사용하며 preHandle,postHandle,afterCompletion 메서드를 구현하여 사용가능하다. preHandle : 컨트롤러 실행 전 postHandle : 컨트롤러 수행 후 결과를 뷰로 보내기 전 afterCompletion : 뷰의 작업까지 완료된 후 수행 WebConfing 설정 interceptor 사용 설정은 아주 간단하다 addInterceptor 를 통해 생성..
WithSecurityContext 테스트 코드를 짜면서 스프링 시큐리티 로그인정보를 필요로 하는 경우가 있는데 @WithMockUser, @WithUserDetails 를 사용하여 인증된 유저를 바탕으로 테스트가 진행가능하다. 하지만, 나의 경우 WithSecurityContext를 커스텀하여 userDetails를 구현한 Member객체로 사용하기 위해 아래와 같이 어노테이션을 추가함 WithMockMember @Retention(RetentionPolicy.RUNTIME) @WithSecurityContext(factory = WithSecurityContextFactoryImpl.class) public @interface WithMockMember { long id() default 1L; St..
@ConfigurationProperties @Value 는 단일값을 주입하기에 적당하다. @ConfigurationProperties 를 통해 값을 주입할 경우 RelaxedBinding이 적용된다. RelaxedBinding ex) resources_url → resourcesUrl을 동일 키값으로 판단 build.gradle implementation 'org.springframework.boot:spring-boot-starter-parent' application.yaml ## config spring: config: import: - classpath:/config-properties.yaml config.yaml site : url: localhost:8080 resources_url: /r..
spring security 버전이 6로 업그레이드 되면서 셋팅 방법도 일부 변경되었다. Build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.hy' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { annotationProcessor ..