Spring 中使用 QuartzJobBean 来进行定时任务的操作
代码如下:
@Controller @Scope("prototype")
public class QuartzSyncJob extends QuartzJobBean {
private MsgBusinessImpl msgBusinessImpl ;
public void setMsgBusinessImpl(MsgBusinessImpl msgBusinessImpl) {
this.msgBusinessImpl = msgBusinessImpl;
}
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
if(msgBusinessImpl != null){
msgBusinessImpl.deleteMsg(1);
}
}
}
其中private MsgBusinessImpl msgBusinessImpl ; 和setMsgBusinessImpl 这两个步十分重要,本来也想用action中那种方案自动注入,调用实例的,结果总是空指针。
用此方案,还需要在Spring配置文件,加入 <ref bean="msgBusinessImpl"/>
这样,自动任务中的业务类,就能得到0实例了。
<!-- Configure the sync Service -->
<bean name="randomSyncJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.fireinwind.job.QuartzSyncJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="timeout">
<value>5</value>
</entry>
<entry key="msgBusinessImpl">
<ref bean="msgBusinessImpl"/>
</entry>
</map>
</property>
</bean>
<!-- 配置触发器 -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="randomSyncJob" />
</property>
<!-- 每天0点0分,触发RandomPriceJob,具体说明见附录 -->
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<bean autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 添加触发器 -->
<property name="triggers">
<list>
<ref local="cronTrigger" />
</list>
</property>
</bean>
==========
自己在另一个项目(tdstatistic)中也想用此算法,ShopBusiness是接口,怎么折腾也没折腾成功,后来又定义了一个ShopBusiness2为真实的业务类才解决接口类注入失败的问题,早知道自己是这么写的,把实现类注入不就行了。呵。。。。
2012-11-18晚
------------------------------------------------------
2013-07-18 总结
在配置文件中的类不是接口
应该是这个样子的
@Service
public class QuartzService {
@Resource private RuleLogDAO ruleLogDAO;
}
spring 配置文件
<!-- Configure the sync Service -->
<bean name="randomSyncJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.zqk.cpyj.filter.QuartzSyncJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="quartzService" value-ref="quartzService"/>
</map>
</property>
</bean>
<!-- 配置触发器 -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="randomSyncJob" />
</property>
<!-- 每天0点0分,触发RandomPriceJob,具体说明见附录 -->
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
<bean autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 添加触发器 -->
<property name="triggers">
<list>
<ref local="cronTrigger" />
</list>
</property>
</bean>
相关推荐
当提交jsp页面上的form表单时,系统会根据action的值来找到servlet里面具体的action,(这里的servlet是在web.xml配置文件里面),然后调用action里面的execute()方法,目的是用来调用业务逻辑的类的对象,...
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...
1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...
TransactionProxyFactoryBean 是一个 FactoryBean,它可以创建一个代理对象,该代理对象可以拦截业务方法的调用,并对事务进行管理。这个代理对象使用 TransactionInterceptor 来实现事务处理,...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...
springcloud-zipkin:链路跟踪工具,监控并就持久化微服务集群中调用链路的通畅情况,采用rabbitmq异步传输、elasticsearch负责持久化的方式集成。 #### 软件架构 1、JDK:jdk-8u181-windows-x64。 2、MAVEN:...
SayHello类中的_helloGen字段类型为 EnHelloGenerator,这将导致我们很难给它赋予一个其它的HelloGenerator(例如CnHelloGenerator,用于生成 中文问候语)。另外MainApp也严重依赖于SayHello.dll以及HelloGenerator...
* 可测性:Struts1.2 Action 的一个主要问题是 execute 方法暴露了 Servlet API,而 Struts2.0 Action 可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。 三、项目中使用 SSH 的原因 ...
具体来说,在基于SpringCloud的微服务模式中,各个微服务会基于SpringMVC的Controller定义多个该微服务需要向外部发布的接口。根据各个微服务功能边界定义的不同,有些微服务会提供与具体业务相关的接口,如支付接口...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
我们依从于Spring的倡导为业务类定义一个接口: 代码 7 业务层操作接口 1. public interface FileService 2. { 3. void save(FileActionForm fileForm);//将提交的上传文件保存到数据表中 4. List getAllFile();//...
在 UserManageTest 类中,我们首先需要创建一个 Spring 的应用上下文对象 ApplicationContext,然后使用该对象来获取一个名为 oneUserInfoManage 的 bean。接着,我们可以使用该 bean 来调用 doUserLogin 方法,并将...
在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类...
Mybatis 或者 dubbo 或者 ...首先要弄清楚 spring的加载与生成bean的机制 spring在启动的时候 会 扫描 所有定义的 bean的类 并定义BeanDefinition 然后通过BeanDefinition 在调用creataBean方法的时候会 去实例 初始
在没有使用Spring之前,如果在业务逻辑层中访问数据访问层,需要在业务逻辑层中创建数据库访问层的对象,然后使用该对象调用DAO方法。当数据访问层程序发生改动时,还需要改动业务逻辑层的程序,加大了程序员的工作...
1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...
概念:面向切面编程,在不改变源码的情况下对方法进行增强,抽取横切关注点(日志处理,事务管理,安全检查,性能测试等等),使用AOP进行增强,使程序员只需要关注与业务逻辑编写. 专业术语 目标Target:需要增强的类 ...
基于Spring Boot 2和Spring Cloud Finchley.SR2,更符合企业级的分布式和服务化解决方案,Roses...目前已全面升级,整体模块化重构,整体功能分为4类,规则类模块(R)、开发工具模块(D)、运维类模块(O)、业务类模块(S)
编写网页,调用步骤5的javascript中的相关方法(间接调用服务器端的相关类的方法),执行业务逻辑,将执行结果利用回调函数返回。 6.在回调函数中,得到执行结果后,可以继续编写业务逻辑的相关javascript代码。 ...