Spring Configuration을 구성할 때 @Configuration 클래스 내부의 메서드에다가 @Bean을 선언하여 구성합니다. 만일 동일한 타입의 @Bean이 여러 개이고 환경별로 다르게 동작하게끔 구성하기 위해서는 @Profile을 사용해 처리할 수 있습니다. 그런데 이 @Profile을 사용할 때 주의해야 할 점이 있는데요. 예제코드와 함께 살펴보겠습니다. 예제코드 위 코드는 AWS SES를 이용하기 위해 AmazonSimpleEmailService 타입의 Bean을 생성하는 코드입니다. local 환경에서는 설정 파일에 있는 access-key, secret-key 정보로 credentials 정보를 생성하여 이용할 수 있도록, dev 환경은 EC2에 배포되니 IMDS를 이용하여 EC2에..
AWS SES를 이용하여 사용자에게 이메일을 발송할 때 발신자 정보는 기본적으로 발신자 이메일로 설정됩니다. 그런데 발신자 정보를 발신자 이메일이 아닌 다른 값으로 세팅해줘야 하는 상황이 있을 수 있는데요. 그 방법에 대해 예제코드로 알아보도록 하겠습니다. 예제코드 HTML 삽입 미리보기할 수 없는 소스 AWS SES SDK를 이용하여 사용자에게 이메일을 발송하는 예제코드입니다. HTML 삽입 미리보기할 수 없는 소스 이메일을 발송하는 예제 테스트 코드입니다. 이제 테스트 코드를 실행하여 이메일을 발송해보겠습니다. 정상적으로 발송되었지만 보낸 사람은 발신자 이메일 주소로 표기되었습니다. 이제 이 부분을 변경해보도록 하겠습니다. 발신자 정보 변경 (영문) HTML 삽입 미리보기할 수 없는 소스 발신자 정보..
ThreadLocal과 InheritableThreadLocal에 대해 많이 들어보신 분도 계시겠지만 생소하신 분도 계실 것 같습니다. 두 클래스는 Java 1.2에 등장한 클래스이며 ThreadLocal과 InheritableThreadLocal에 대해 한번 알아보겠습니다. ThreadLocal 쓰레드 로컬 변수를 제공하며 이 로컬 변수는 get 또는 set 메서드를 통해 액세스 하거나 변경할 수 있으며 쓰레드 마다 독립적으로 갖고있는 변수를 말합니다. ThreadLocal의 설명을 해석하자면 위와 같습니다. 즉, ThreadLocal에 할당된 변수는 각 쓰레드마다 고유하게 할당되므로 멀티쓰레드 간 쓰레드 세이프 하게 프로그램을 작성할 수 있습니다. 예제코드를 함께 살펴보겠습니다. ThreadLocal..
사용자에게 메일을 발송할 때 기존에는 Daum에서 제공하는 SMTP 서비스를 사용했었습니다. 근데 간헐적으로 메일발송이 되지 않거나 10~20분 후 발송되는 현상이 있어서 SMTP 서비스를 AWS SES로 바꾸기로 하였습니다. 그래서 이번 글에서는 AWS SES와 Spring Boot로 이메일 전송기능을 만드는 작업을 정리해보겠습니다. 위에서부터 순서대로 진행하시면 문제없이 만드실 수 있습니다. AWS SES 세팅 AWS 계정을 만들고 SES 서비스를 처음 이용하면 해당 계정은 샌드박스에 있습니다. 이 샌드박스에 있으면 다음과 같은 활동이 제한됩니다. - 자격증명된 이메일로만 메일을 보낼 수 있습니다. - 24시간 동안 최대 200개의 메세지를 보낼 수 있습니다. - 초당 최대 1개의 메세지를 보낼 수 ..
Java의 Functional Interface란 단 1개의 추상메서드를 가진 인터페이스를 얘기합니다. 이번 글에서는 Functional Interface에 대해 새롭게 알게 된 내용을 공유하고자 합니다. 예제 위 소스를 보시면 반환 타입이 int인 1개의 추상메서드가 있고 @FunctionalInterface가 선언되어 있습니다. @FunctionalInterface를 선언하면 컴파일러에게 이 인터페이스는 단 1개의 추상메서드만 허용하는 Functional Interface라는걸 알립니다. 만약에 추상메서드를 2개 이상 작성할 경우 위와 같은 컴파일 에러를 내뱉게 됩니다. 이번에는 num2() 라는 추상메서드를 지우고 또 다른 추상메서드를 추가해보도록 하겠습니다. 이번엔 아까처럼 컴파일 에러가 발생하지..