특정 시간마다 자동으로 작동하게 만드는 것.
이미 있는 클래스에 메소드를 만들어도 되고 클래스를 따로 만들어서 해도 됨
@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());
}
}
}
}