`
mimang2007110
  • 浏览: 232399 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

手动修改和启动在spring配置文件中配置的定时器

 
阅读更多

1、创建业务处理类

 

public class TaskTestAction
{
    public void run()
    {
        System.out.println("测试定时器");
    }
}

 

2、在spring配置文件中配置定时器

 

<!-- 定时器业务类 -->
	<bean id="testTask" class="com.wkx.warning.controller.TaskTestAction"></bean>
	
	<!-- 定时器执行的业务类 -->
	<bean id="testDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="testTask" />
		</property>
		<property name="targetMethod">
			<value>run</value>
		</property>
	</bean>
	
	<!-- 配置触发器,每隔多久触发一次 -->
	<bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<property name="jobDetail">
			<ref bean="testDetail" />
		</property>
		<!-- 每隔多久执行一次,毫秒级 -->
		<property name="repeatInterval">
			<value>5000</value>
		</property>
	</bean>
	<!-- 通用定时器工厂 -->
	<bean id="testScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref local="testTrigger" />
			</list>
		</property>
		<property name="autoStartup" value="false"/>
		<property name="quartzProperties">
			<props>
				<prop key="org.quartz.threadPool.threadCount">2</prop>
			</props>
		</property>
	</bean>
	
	<!-- MAP对象,存储定时器 -->
	<bean name="testMap" class="java.util.HashMap">
		<constructor-arg>
			<map>
				<entry key="testScheduler" value-ref="testScheduler" />
			</map>
		</constructor-arg>
	</bean>

 

3、在controller代码中获取map对象,并更改和启动定时器信息

 

// scheMap应该是从spring配置文件中获取的
Scheduler std = scheMap.get("testScheduler");
// 获取触发器
SimpleTrigger t = (SimpleTrigger)std.getTrigger("testTrigger", Scheduler.DEFAULT_GROUP);
// 修改触发器的间隔世界
t.setRepeatInterval(10000);
// 更新定时器
std.rescheduleJob("testTrigger", Scheduler.DEFAULT_GROUP, t);
std.start();

 注:以上的scheMap是从配置文件中获取的,可以通过spring注入的方式获取,例如

 

@Resource(name = "testMap")
 private Map<String, Scheduler> scheMap;

 也可以自己读取spring配置文件获取

 

ApplicationContext ac = new FileSystemXmlApplicationContext("D:/apache-tomcat-7.0.25/webapps/ManageSystem/WEB-INF/conf/applicationContext.xml");
Map<String, StdScheduler> scheMap = (Map<String, StdScheduler>)ac.getBean("testMap");
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics