회원 가입시 메일을 발송하는 서비스를 가정했을 때,
메일 발송은 외부 서버와의 연동이 필요하므로 시간이 오래 걸릴 수 있으니 비동기로 진행되도록 하고,
ApplicationEventPublisher 와 EventListener 를 사용해서 비동기로 실행되는 메일 발송 실패 시, 회원 가입에 대해서도 롤백이 적용되도록 하는 것이 실습 과제였다.
과제의 기본 목표는 달성했고,
실제로 메일을 보내는 방법도 적용해보고 싶어서 블로그들을 보며 따라해보고 있는데,
Gmail 사용자 계정과 앱 비밀번호는 보안상 환경 변수로 처리하라고 하고 있었다.
환경 변수 적용을 위해 application.yml 파일에서
mail:
smtp:
host: smtp.gmail.com
port: 587
username: ${gmail.username}
password: ${gmail.password}
auth: true
starttls:
enable: true
이런 식으로 중요 정보를 변수 처리해두고 있었고,
이 변수가 필요한 클래스에서
@Value("${mail.smtp.username}")
private String username;
이런 식으로 사용하라고 되어 있었다.
대부분 application.yml 이나 application.properties 에 저런 식으로 환경변수 설정하고
사용하는 곳에서는 이렇게 사용해라