[Spring Boot] Scheduling

고운·2023년 5월 23일
0

Spring Boot

목록 보기
11/13
post-custom-banner

스케줄링이란

특정 시간마다 자동으로 작동하게 만드는 것.

이미 있는 클래스에 메소드를 만들어도 되고 클래스를 따로 만들어서 해도 됨

기존에 있는 application 클래스에 만들기

@SpringBootApplication
@EnableScheduling	//스케줄링을 enable 하기
public class BoardTestApplication {

	
	@Scheduled(fixedRate=10000)		//10초마다 이 메소드가 동작하게 하는 어노테이션
	public void pro() {
		System.out.println("콜콜");
	}
	
	public static void main(String[] args) {
		SpringApplication.run(BoardTestApplication.class, args);
	}
}

따로 만들기

메인을 실행하면 아래 메소드가 실행됨

@Component
@EnableScheduling
public class SistUtil {

	@Scheduled(fixedRate=1000)
	@public void pro() {
		System.out.println("콜콜");
	}
}
❓ @Component:
일처리를 위한 클래스에 붙이는 어노테이션
자동 스캔해서 객체 생성

주기적 호출

@Scheduled(fixedRate=3000)
//호출시작과 다음시작 사이 3초

@Scheduled(fixedDelay=3000)
//호출완료와 다음 시작 사이 3초

호출 시간 설정

@Scheduled(cron=”초 분 시간 일 월 요일”)

초(0-59)

분(0-59)

시간(0-23)

일(1-31)

월(1-12 또는 JAN-DEC)

요일(1-7 또는 SUN-SAT)

연도(1970-2099)

*: 모든 값
?: 해당 항목 사용 안 함

특정 시간에 급여명세서 이메일로 보내기

@Component
@EnableScheduling
public class SistUtil {
	
	@Autowired
	private MailSender mailSender;
	
	public void setMailSender(MailSender mailSender) {
		this.mailSender = mailSender;
	}
	
	
	@Autowired
	private EmpDAO dao;
	
	public void setDao(EmpDAO dao) {
		this.dao = dao;
	}

	
	//급여명세서를 이메일로 보내는 메소드
	//12시 7일 매달

	@Scheduled(cron="0 0 12 7 * ?")
	public void sendPayslip() {
		List<EmpVO> list=dao.findAll();
		for(EmpVO e:list) {
			SimpleMailMessage mailMessage=new SimpleMailMessage();
			mailMessage.setFrom("kgukgu33@gmail.com");
			mailMessage.setTo(e.getEmail());
			mailMessage.setSubject("급여명세서");
			mailMessage.setText(e.getEname()+"님의 급여: "+e.getSalary());
			try {
				mailSender.send(mailMessage);
				System.out.println(e.getEname()+"님에게 급여명세서 발송 완료");
			}catch(Exception ex) {
				System.out.println(ex.getMessage());
			}
		}
	}
}
profile
백엔드 개발자
post-custom-banner

0개의 댓글