프로젝트/Ku:room 15

SecurityConfig 내 이용한 허용 URI Enum 클래스로 관리하기

왜 리팩토링 하였는가?현재 프로젝트 내에서 스프링 시큐리티를 적용중이다.특정 URI를 특정 ROLE을 가진 유저가 허용하려면, SecurityConfig 내에서 URI를 열거식으로 나열해야 한다.이 때, 관리하기 어려움이 있다. 따라서 Enum 클래스로 분리하여 리팩터링 하였다.스프링 시큐리티 설정을 할 수 있는 SecurityConfig 클래스 내에서 특정 URI를 허용하기 위해 다음과 같이 Enum 클래스로 리팩토링을 진행하였다. @SecurityConfig 클래스http.authorizeHttpRequests 내에서, AuthorizationList.LIST.getAuthroities()를 이용하여, 권한 설정을 관리하였다.@EnableWebSecurity@Configuration@RequiredA..

각 상황에 맞는 @ControllerAdvice로 예외 메시지 분리하기

@ControllerAdvice는 스프링 애플리케이션 전체에서 예외 처리 메서드를 선언할 수 있는 특수한 스프링 빈이다. 본 프로젝트에서는 @BaseControllerAdvice랑, 각각의 도메인별 @ControllerAdvice를 설정해주었다. @BaseControllerAdviceCustomException 외의 나머지 예외를 처리하기 위해 다양한 예외 상황에 대비할 수 있는 폴백 기능을 추가하였다.@Slf4j@RestControllerAdvicepublic class BaseControllerAdvice { @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler(Exception.class) public BaseErr..

이메일 인증 기능 @Async 비동기 처리

✔️ 이메일 전송 기능에서 비동기를 도입하였다.이메일 전송 로직에서 JavaMailSender를 이용하고 있는데, 메일 지연 전송 시간이 많이 든다는 단점이 있다.아래 내용과 같이 대략 9.65s가 소요된다. ✔️  이메일을 보내는 과정 자체를 쓰레드가 기다리는 것이 아니라 요청을 보내고 쓰레드는 다른 작업을 수행하도록 변경하였다.✔️ AsyncConfig@Configuration@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer { @Override @Bean(name = "mailExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor exe..