학원/Spring

27_Email, Scheduling

행수쌤 2023. 4. 30. 16:52
728x90
반응형

Email

    - email 의존성 주입
    - application.properties에 아이디, 앱비번 등 기록
    - CustomEmailProperties Class 생성 후 properties에 있는 정보 저장
    - EmailConfiguration Class 생성 후  메일 사용 설정(JavaMailSender @Bean 설정 메서드 생성)
          - JavaMailSenderImpl 객체 생성 후 이용 업체에 대한 정보 설정
          - Properties 객체 생성 후 통신과 관련된 추가 설정 후 JavaMailSenderImpl에 등록

          - JavaMailSenderImpl 객체 return
     - EmailServiceImpl에 JavaMailSender 연결 후(sender) 메일, 제목, 텍스트 입력 후 전송

          - MimeMessage 객체에 JavaMailSender 데이터 입력/생성

          - MImeMessageHelper 객체 생성(MimeMessage 객체 입력) 및 받는사람, 제목, 내용 추가

          - JavaMailSender 객체로 email 전송

 

JSOUP으로 보낼 내용 html으로 가공

    - 작성해둔 html 파일 불러오기 ClassPathResource resource = new ClassPathResource("templates/cert.html");

    - Scanner로 String으로 변환

Scanner sc = new Scanner(resource.getFile());
StringBuffer buffer = new StringBuffer();
while(sc.hasNextLine()) {
    buffer.append(sc.nextLine());
}

    - 변환된 String을 Html로 해석  Document doc = Jsoup.parse(buffer.toString());

    -  id 찾기
          Element title = doc.getElementById("custom-email-title");
    -  변경
          title.text("제목 변경입니다");
    -  a태그 링크 변경
          link.attr("href", "https://www.naver.com");

    - doc를 문자열로 변환 후 반환 return doc.toString();

 

Scheduling

      *Application.java 에 어노테이션 @EnableScheduling을 추가
      서비스나 컴포넌트에 메서드 작성함
      실행할 메서드에 @Scheduled(fixedRate=1000L)
             fixedDelay : 실행시점
             fixedRate : 주기(단위 : ms, long)
             cron="******"  : 매초 매분 매시 매일 매월 매요일

@Scheduled(fixedRate = 1000L)//1초
@Scheduled(cron="* * * * * *")//1초(매초 매분 매시 매일 매월 매요일)
@Scheduled(cron="0 * * * * *")//매분 실행 (0초 매분 매시 매일 매월 매요일)
@Scheduled(cron="0 0 * * * *")//매시정각
@Scheduled(cron="0 0 9 * * *")//매일 아침 9시
@Scheduled(cron="0 0 9,18 * * *")//매일 아침 9시, 오후 6시 실행
@Scheduled(cron="0 0 9-18 * * *")//매일 출근시각부터 퇴근시각까지 정각마다
@Scheduled(cron="0 0 9-18 * * 1-5")//주중 출퇴근 시간 동안 정각마다(월요일:1 cf) 자바는 일요일이 1, 영어도 가능)
@Scheduled(cron="0 0 9-18 * * mon-fir")
@Scheduled(cron="0 0 15 25 * ?")//급여 지급 시각(매월 25일 오후 3시) ? : 아무거나 와도 됨 
@Scheduled(cron="0 0 7 */10 * ?")//열흘마다(주기) 아침 7시에 주기 : */10
@Scheduled(cron="* * * ? * thu#2")//2번째주 목요일(4#2)
@Scheduled(cron="0 0 18 ? * thuL")//매월 마지막 목요일 퇴근시각(# 안씀, 4L)

728x90
반응형