콘텐츠로 이동

2021 12 06

2021-12-06

Spring @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에 작성해주기 (민감정보로 관리하기)
    spring:
        mail: 
          host: smtp.gmail.com
          port: 587
          username: GMAIL_ADDRESS
          password: GMAIL_PASSWORD
          properties:
            mail:
              smtp:
                auth: true
                starttls:
                  enable: true
    
  • 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 형식

  • 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 환경변수들로 구성할 수 있음
    spring.mail.host=smtp.gmail.com
    spring.mail.port=587
    spring.mail.username=<login user to smtp server>
    spring.mail.password=<login password to smtp server>
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    
  • Email 보내기 - JavaMailSender가 메일 보낼 수 있게 할 수 있음 - [Simple Email 보내기] - from 주소는 필수가 아니지만, 많은 SMTP 서버에서 없다면 reject 될 것 - [Sending Emails With Attachments] - JavaMail 라이브러리의 Mime multipart message를 써야할 수도 - Spring JavaMail 메시징을 지원하는 클래스 있음 (org.springframework.mail.javamail.MimeMessageHelper)