Spring Framework 에서 Quartz 이용하여 파라미터 있는 스케쥴러 구현
해당 게시글은 Spring Framework 4.3.29 Release 버전을 사용하고 있습니다.
Spring 의 @Scheduled 어노테이션을 사용하여 스케줄링을 하게 되면 No args 메서드, 즉 파라미터가 없는 메서드만 배치잡 실행이 가능하다. 왜냐면 어노테이션을 사용해 배치잡을 돌릴 경우 따로 command가 없는 POJO형태이기 때문이다.
그렇기 때문에 parameter가 있는 스케쥴러를 사용하기 위해선 Quartz 프레임워크를 일단 설치한다.
Spring task 상속받아 써야한다.
JobDetailFactoryBean을 써서 파라미터 값을 미리 넣을 수 있음.
<entry value-ref 해서 다른 bean을 인젝션받을 수 있다.
--
내가 사용하기로 결정한 것은
34.6.2 Using the MethodInvokingJobDetailFactoryBean!!
왜냐면 얘가 더 쉽기때문이다. JobDetailFactoryBean을 쓰려면 더 복잡하게 주입해야한다.
Spring Context support에서 executeInternal 오버라이드.
스케줄러를 스프링에 추가할 때, xml 파일에서 ref에 bean id를 , value에 타겟 메서드를 넣는다.
1. JobDetailBean
2. method 또는 map detail bean
3. trigger (배치잡 주기를 적음. 나의 경우 cron 방식 사용함.)
4. scheduler