회원가입 완료하면 인증메일을 전송합니다.
이메일 전송은 ApplicationEventPublisher로 event 발생시켜 비동기적으로 실행합니다.
contorller
AuthController.java
service
AuthService.java
회원가입
ApplicationEventPublisher 빈을 주입하여 publishEvent() 메서드를 통해 생성된 이벤트 객체를 넣어 줍니다.
회원가입 후 이벤트 발행
Event
RegistrationCompleteEvent.java
Event listener
@EventListener 어노테이션을 통해 발생하는 이벤트를 캐치합니다
RegistrationCompleteEventListener.java
메일 본문은 templateEngine 사용하여 html 형식으로 전송합니다.
비동기 처리
스프링 이벤트는 기본적으로 동기 방식으로 동작합니다.
이메일 전송은 끝나는 시간이 다소 오래 걸리기 때문에 이벤트를 비동기 처리합니다
config/AsyncConfig.java
@EnableAsync 어노테이션을 통해 비동기를 사용하겠다고 선언
프로세스 갯수만큼 스레드풀 설정