最近在项目中使用到了quartz这个当下很流行的定时任务管理插件,我们的项目是SpringMVC通过注解配置的模式,只要有Spring的存在我们都知道,个各类的注入都是通过spring在项目发布的时候注入进去的,但是当使用quartz后发现,它和Spring注入类是一前一后的顺序,也就是说先调用quartz后执行类的注入,在这样的情况下,如果我们要调用DAO或者BIZ可如何是好呀?
不用急,quartz已经为我们提供了方法,下面我就简单介绍一下吧!SpringMVC调用quartz的时候我们需要有applicationContext-quartz.xml这样一个文件,打开这个文件,按照以下格式书写即可了!
<beans> <!-- 要调用的工作类 --> <bean id="testController" class="com.controller.TestController"> <property name="testDAO"> <ref bean="testDAO" /> </property> </bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="testController" /> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>execute</value> </property> </bean> <!-- 定义触发时间 --> <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobtask" /> </property> <!-- cron表达式 --> <property name="cronExpression"> <value>0 */1 * * * ?</value> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime" /> </list> </property> </bean> </beans>
很类似与Spring中通过配置文件注入的方式。