在某controller中创建调度方法,例如,我是在itoo-jrkj-teacher-web的TeacherController 添加的方法
如下:
public void work() {
System.out.println("计算评分!");
}
然后在
itoo-jrkj-teacher-web的applicationContext-common.xml文件中
添加如下配置:
<!-- 启动触发器的配置开始 -->
<bean name="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="myJobTrigger" />
</list>
</property>
</bean>
<!-- 启动触发器的配置结束 -->
<!-- 调度的配置开始 -->
<!-- quartz-2.x的配置 -->
<bean id="myJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myJobDetail" />
</property>
<property name="cronExpression">
<value>0/9 * * * * ?</value>
</property>
</bean>
<!-- 调度的配置结束 -->
<!-- job的配置开始 -->
<bean id="myJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="teacherController" />
</property>
<property name="targetMethod">
<value>work</value>
</property>
</bean>
<!-- job的配置结束 -->
启动就可以正常调用了,控制台打印如下:
发现,每次调用方法执行两次,最终找到原因:配置文件application-commons.xml在web.xml被重复配置,造成程序重复加载需要删除如下配置。
上方标出的配置为全局配置,下方的为局部配置,所以应删除第二个标出的位置。
修改后,打印正常,实现目的。