您的位置:首页 > 其它

第1章 ssm 整合 quartz (解决了无法注入service问题)

2017-06-02 23:50 891 查看

代码下载: http://download.csdn.net/detail/bird73/9859199

第1章 ssm 整合 quartz (解决了无法注入service问题)

1.1.2 简单项目整合流程

 1.  导入jar包log4j-1.2.17.jar

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-context-support-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

quartz-all-1.8.6.jar

slf4j-api-1.7.5.jar

slf4j-log4j12-1.7.5.jar
 
2  创建 JobFactory.java
 package com.shop.user.util;

import org.quartz.spi.TriggerFiredBundle;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.config.AutowireCapableBeanFactory;

import org.springframework.scheduling.quartz.AdaptableJobFactory;

/**

* Created by dupang on 2016/11/14.

*/

public class JobFactoryextends AdaptableJobFactory {

//这个对象Spring会帮我们自动注入进来,也属于Spring技术范畴.

@Autowired

private AutowireCapableBeanFactory capableBeanFactory;

protected Object createJobInstance(TriggerFiredBundlebundle) throws Exception {

//调用父类的方法

Object jobInstance =super.createJobInstance(bundle);

//进行注入,这属于Spring的技术,不清楚的可以查看Spring的API.

capableBeanFactory.autowireBean(jobInstance);

return jobInstance;

}

}

5 创建MyUserJob.java

Ø 注意: 此类中主要有两个属性,分别完成了注入

Ø 注意: 此类中executeInternal() 方法 中完成Dao层数据的调用 (Dao层代码,请参考示例项目)

package com.shop.user.action;

import java.util.List;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

import com.shop.user.pojo.User;

import com.shop.user.service.UserService;

public class MyUserJobextends QuartzJobBean {

private Stringname;

public String getName() {

return name;

}

public void setName(Stringname) {

this.name =name;

}

private UserServiceuserService;

public UserService getUserService() {

return userService;

}

public void setUserService(UserServiceuserService) {

this.userService =userService;

}

@Override

protected void executeInternal(JobExecutionContextcontext) throws JobExecutionException {

System.out.println("name : " +name);

System.out.println("userService : " +userService);

List<User> list =userService.getAllUserList(new User());

for (Useruser : list) {

System.out.println("user-->:" +user);

}

}

}
 
 
3   applicationContext.xml
 <!-- 定时任务的factorybean,配置其他config -->

<bean id="jobFactory" class="com.shop.user.util.JobFactory"></bean>

<bean id="userService" class="com.shop.user.service.impl.UserServiceImpl"></bean>

<!-- 配置job -->

<bean id="remindJob" class="org.springframework.scheduling.quartz.JobDetailBean">

<!-- 指定 jobClass是RemindJob -->

<property name="jobClass" value="com.shop.user.action.MyUserJob"></property>

<!-- 指定任务数据 -->

<property name="jobDataAsMap">

<map>

<entry key="name" value="tom"></entry>

&l
a695
t;entry key="userService" value-ref="userService"></entry>

</map>

</property>

</bean>

<!-- 配置触发器 -->

<bean id="myTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

<!-- 配置JobDetail -->

<property name="jobDetail" ref="remindJob"></property>

<!-- 配置启动后延迟时间1s -->

<property name="startDelay" value="3000"></property>

<!-- 配置重复执行的时间间隔3s -->

<property name="repeatInterval" value="5000"></property>

</bean>

<!--另一种 触发器 :Cron触发器

<bean name="myCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

配置JobDetail

<property name="jobDetail" ref="remindJob"></property>

配置Cron表达式

<property name="cronExpression" value="0/10 * * ? * *"></property>

</bean>

-->

<!-- 配置调度器 -->

<bean name="MyScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<!-- 其他属性省略 -->

<property name="jobFactory" ref="jobFactory"></property>

<property name="triggers">

<list>

<!-- 指定触发器 -->

<ref bean="myTrigger" />

<!-- 可以在这里添加其他的触发器 -->

<!-- <ref bean="myCronTrigger" /> -->

</list>

</property>

</bean>
 
4 启动项目  可以间隔5秒 调用一次方法了
 

1.1.3  另一种 触发器

1  该触发器可以完成指定某时间触发,如 每天上午10:15触发 /  "0 15 10 * * ?"
 <!-- 配置Cron触发器 -->

<bean name="myCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<!-- 配置JobDetail -->

<property name="jobDetail" ref="remindJob"></property>

<!-- 配置Cron表达式-->

<property name="cronExpression" value="0/10 * * ? * *"></property>

</bean>
 

1.1.4  时间配置参考 

时间配置:"0/10 * * * * ?" 每10秒触发

"0 0 12 * * ?" 每天中午12点触发

"0 15 10 ? * *" 每天上午10:15触发

"0 15 10 * * ?" 每天上午10:15触发

"0 15 10 * * ? *" 每天上午10:15触发

"0 15 10 * * ? 2005" 2005年的每天上午10:15触发

"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发

"0 15 10 15 * ?" 每月15日上午10:15触发

"0 15 10 L * ?" 每月最后一日的上午10:15触发

"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

每月最后一天23点执行一次:0 0 23 L * ?

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: