在SpringMVC中quartz如何实例化BIZ或DAO

最近在项目中使用到了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中通过配置文件注入的方式。

猜你喜欢

转载自jackie198407.iteye.com/blog/1595367