✨ 구현 할 기능
매일 오전 8시마다 복습 대상 URL을 DB에서 조회하여 각 사용자에게 이메일로 전송하는 스케줄러 기능을 구현한다.
📢 구현 방식
1. 스케줄링
@EnableScheduling을 통해 스케줄링 활성화
@Scheduled(cron = "0 0 8 * * *") 어노테이션을 사용하여 매일 오전 8시 실행
2. 비동기 처리
@EnableAsync를 통해 비동기 처리 활성화
@Async 어노테이션을 사용하여 이메일 전송을 비동기로 처리
- 스케줄러 실행 지연을 방지하기 위해 이메일 전송 작업을 별도 스레드에서 수행
3. 이메일 본문 렌더링
- Thymeleaf 템플릿 엔진을 사용하여 HTML 이메일 본문 생성
- 유저별 복습 대상 URL 목록을 템플릿에 바인딩
4. 전체 처리 흐름
[Scheduler 실행 (08:00)]
↓
[오늘 날짜 기준 복습 대상 ReviewCycle 조회]
↓
[유저별로 복습 URL 그룹핑]
↓
[각 유저별 HTML 렌더링 + 이메일 전송 (비동기)]
📑 기능 명세
설정
스케줄러
데이터 조회
이메일 전송
테스트
📕 래퍼런스
✨ 구현 할 기능
매일 오전 8시마다 복습 대상 URL을 DB에서 조회하여 각 사용자에게 이메일로 전송하는 스케줄러 기능을 구현한다.
📢 구현 방식
1. 스케줄링
@EnableScheduling을 통해 스케줄링 활성화@Scheduled(cron = "0 0 8 * * *")어노테이션을 사용하여 매일 오전 8시 실행2. 비동기 처리
@EnableAsync를 통해 비동기 처리 활성화@Async어노테이션을 사용하여 이메일 전송을 비동기로 처리3. 이메일 본문 렌더링
4. 전체 처리 흐름
📑 기능 명세
설정
@EnableScheduling설정 추가스케줄러
ReviewNotificationScheduler클래스 생성데이터 조회
ReviewCycleRepository에 오늘 날짜 기준 복습 대상 조회 쿼리 추가이메일 전송
review-notification.html)테스트
📕 래퍼런스