바쁜 현대인을 위한 세 줄 요약 문제 Spring Security와 커스텀 SecurityFilterChain 적용 후 @WebMvcTest를 적용한 테스트 코드가 테스트를 통과하지 못했습니다. 아래는 내가 추가한 SecurityFilterChain 빈 설정 클래스입니다. @Configuration @EnableWebSecurity public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain( HttpSecurity http, TokenAuthenticationFilter tokenAuthenticationFilter ) throws Exception { return http .csrf(AbstractHttpCo..
개발을 하다보면 시스템에 필요한 상수가 존재합니다. ex)비밀키 이를 속성 파일(application.yml)이나 환경 변수로 빼서 관리할 수 있습니다. 외부에서 필요한 상수를 관리하면 Java 소스코드를 재컴파일 하지 않아도 값을 변경할 수 있고 실행 환경에 따라 다른 값을 설정할 수도 있습니다. 저는 위와 같은 경우 보통 다음과 같이 사용했습니다. @Value("${prefix.value}") private String value; 하지만 위 방식은 문제가 있습니다. @Value 어노테이션 동작 방식 어떤 문제가 있는지 알아보기 전에 잠시 @Value 어노테이션의 동작 방식을 알아봅시다. @Value 어노테이션은 Spring IoC 컨테이너의 DI 과정과 비슷한 규칙으로 동작합니다. 필드에 작성한 어..
테스트를 할 때 테스트 클래스를 만들고 메소드를 만들어 테스트를 한다. 이 때 네이밍해야 할 요소는 크게 두가지이다. 테스트 클래스 이름 테스트 메소드 이름 단위 테스트라면 테스트 클래스의 이름은 테스트하고자 하는 클래스 이름 뒤에 Test를 붙이는게 일반적이다. 메소드의 경우 테스트하고자 하는 클래스의 public 메소드의 이름을 그대로 사용할 수 있다. 예시로 인자로 주어진 언어(Language)에 따라 다른 인사말을 반환하는 클래스가 있다. public class Hello { public String hello(Language language) { if (language == Language.KOREAN) { return "안녕하세요"; } return "Hello"; } enum Language..