第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.jarspring-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 * * ?
相关文章推荐
- quartz整合Spring注入Service时空指针异常问题解决
- quartz整合Spring注入Service时空指针异常问题解决
- maven整合CXF WebService+Spring @Resource无法注入问题解决方法
- Spring整合Quartz时,任务类中无法注入Bean的问题
- Quartz定时器中Service注入时空指针问题解决
- 解决Spring boot使用Quartz时Job中无法注入Bean 空指针异常问题
- CXF WebService+Spring 无法注入问题解决方法
- 解决Spring+Quartz无法自动注入bean问题
- SpringMVC quartz 无法注入service和no session问题
- 解决Spring+Quartz无法自动注入bean问题
- 解决Spring+Quartz无法自动注入bean问题
- Quartz任务执行无法注入Bean问题解决
- Shiro解决无法注入Service问题(包括Spring MVC和Spring Boot)
- 解决Spring+Quartz无法自动注入bean问题
- (一)spring3.2.0 quartz-2.2.1 整合 实现动态定时任务 解决service为null问题
- spring整合Jersey 无法注入service的问题
- spring整合quartz注入service的及动态任务处理问题
- spring+quartz整合--解决quartz任务service注入失败
- 解决spring 自动扫描包的时候出现 service无法自动注入的问题
- 解决Spring+Quartz无法自动注入bean问题