2021 12 06
2021-12-06¶
Spring @Scheduled¶
- 참고 1: https://java119.tistory.com/34
- 참고 2: https://jeong-pro.tistory.com/186
- 참고 3: https://www.baeldung.com/spring-scheduled-tasks
- 개요
- 리눅스의 크론탭과 비슷한 기능
- 메서드 위에
@Scheduled어노테이션 붙여주면 끝
- 사용법
1.
@EnableScheduling을 main 메서드 있는 Application에 붙여두자! 2. 하위 패키지의 클래스에서 주기적으로 실행되어야할 메서드 위에@Scheduled어노테이션 붙이자 - 해당 메서드는 void return 타입이여야함! - 해당 메서드는 파라미터가 없어야함!
- 어노테이션 설정값 - cron: "0/10 * * * * ?" 요런 갬성의 크론탭마냥 설정 가능 - "초 분 시 일 월 주 (년)" 으로 표현 - fixedDelay: 이전에 실행된 Task의 종료시간으로부터 정의된 시간 만큼 지난 후 Task 실행 - fixedRate: 이전에 실행된 Task의 시작시간으로 부터 정의된만큼 지난 후 Task 실행
Spring 이메일 보내기¶
- 참고 1: https://victorydntmd.tistory.com/342
- 과정 1. spring-boot-starter-mail 의존성 추가 2. Gmail SMTP Server 설정해주기 3. 해당 설정 값을 application.yml에 작성해주기 (민감정보로 관리하기)
- SimpleMailMessage
- 간단한 텍스트 메일 발송하기
- JavaMailSender를 필드로 들고 있으면, JavaMailSenderImpl이 DI됨
public class MailService { private JavaMailSender mailSender; public void mailSend(MailDto mailDto) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(mailDto.getAddress()); // 받는사람 주소 massage.setFrom("joel@jjang.com"); // 보내는사람 주소 message.setSubject(mailDto.getTitle()); // 제목 message.setText(maiDto.getMessage()); // 메시지내용 mailSender.send(message); } }
- MimeMessageHelper - 스프링의 헬퍼 통해 MIME을 포함한 메일을 발송할 수 있음
- MIME - 참고: https://ko.wikipedia.org/wiki/MIME - 전자 우편을 위한 인터넷 표준 포맷 - 전자우편은 7비트 아스키 문자 사용하여 전송됨 - 따라서 8비트 이상의 코드를 사용하는 문자나 이진 파일들은 MIME 포맷으로 변환되어 SMTP로 전송 - 실질적으로 SMTP로 전송되는 대부분의 이메일은 MIME 형식
- 참고 2: https://www.baeldung.com/spring-email
- Spring Boot에서 메일 보내기 - 다른 디펜던시 굳이 필요없는듯?
- Mail Server Properties 1. MailSender (interface) : 탑 레벨 인터페이스로, 간단한 이메일 전송 담당 2. JavaMailSender (interface) : MailSender의 서브 인터페이스. MIME 메시지를 지원하고, 주로 MimeMessageHelper 클래스가 MimeMessage 생성할 때 쓰임. 3. JavaMailSenderImpl (class) : JavaMailSender의 구현체. MimeMessage와 SimpleMailMessage 지원 4. SimpleMailMessage (class) : simple mail message 보내는 구현체 (제목과 텍스트 정도) 5. MimeMessagePreparator (interface) : MIME message 준비의 콜백을 제공 6. MimeMessageHelper (class) : Mime message 생성의 헬퍼 클래스. 이미지, html 등을 첨부할 수 있게해줌
- Spring Mail Server Properties - SMTP 서버는 JavaMailSenderImpl 로 생성될 수 있음 - 스프링 부트에서는 spring.mail 환경변수들로 구성할 수 있음
- Email 보내기 - JavaMailSender가 메일 보낼 수 있게 할 수 있음 - [Simple Email 보내기] - from 주소는 필수가 아니지만, 많은 SMTP 서버에서 없다면 reject 될 것 - [Sending Emails With Attachments] - JavaMail 라이브러리의 Mime multipart message를 써야할 수도 - Spring JavaMail 메시징을 지원하는 클래스 있음 (org.springframework.mail.javamail.MimeMessageHelper)