`

Spring的自动任务中调用业务类方法

 
阅读更多

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> 

 

 

 

分享到:
评论

相关推荐

    那么action就可以通过该引用值来调用业务类的对象,还有就是在ssh框架中。所有的类都必须通过spring的配置文件进行注册,并获得一个引用值

    当提交jsp页面上的form表单时,系统会根据action的值来找到servlet里面具体的action,(这里的servlet是在web.xml配置文件里面),然后调用action里面的execute()方法,目的是用来调用业务逻辑的类的对象,...

    spring-web-5.3.6 jar包.rar

    这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...

    Spring攻略(第二版 中文高清版).part1

    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 ...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring攻略(第二版 中文高清版).part2

    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入门

    springcloud-zipkin:链路跟踪工具,监控并就持久化微服务集群中调用链路的通畅情况,采用rabbitmq异步传输、elasticsearch负责持久化的方式集成。 #### 软件架构 1、JDK:jdk-8u181-windows-x64。 2、MAVEN:...

    Spring.net框架

    SayHello类中的_helloGen字段类型为 EnHelloGenerator,这将导致我们很难给它赋予一个其它的HelloGenerator(例如CnHelloGenerator,用于生成 中文问候语)。另外MainApp也严重依赖于SayHello.dll以及HelloGenerator...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    ssh(structs,spring,hibernate)框架中的上传下载

    我们依从于Spring的倡导为业务类定义一个接口:  代码 7 业务层操作接口 1. public interface FileService 2. { 3. void save(FileActionForm fileForm);//将提交的上传文件保存到数据表中 4. List getAllFile();//...

    Spring面试题

    在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类...

    关于mybatis spring与dubbo是怎么通过一个接口 你就能调用到一个bean方法的讲解

    Mybatis 或者 dubbo 或者 ...首先要弄清楚 spring的加载与生成bean的机制 spring在启动的时候 会 扫描 所有定义的 bean的类 并定义BeanDefinition 然后通过BeanDefinition 在调用creataBean方法的时候会 去实例 初始

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    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模式...

    Spring.html

    概念:面向切面编程,在不改变源码的情况下对方法进行增强,抽取横切关注点(日志处理,事务管理,安全检查,性能测试等等),使用AOP进行增强,使程序员只需要关注与业务逻辑编写. 专业术语 目标Target:需要增强的类 ...

    基于Spring Boot 2+Spring Cloud+vue开发的支持一致性分布式事务、服务异常定位方案的底层开发框架

    基于Spring Boot 2和Spring Cloud Finchley.SR2,更符合企业级的分布式和服务化解决方案,Roses...目前已全面升级,整体模块化重构,整体功能分为4类,规则类模块(R)、开发工具模块(D)、运维类模块(O)、业务类模块(S)

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    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模式...

    dwr入门+springmvc实现

    编写网页,调用步骤5的javascript中的相关方法(间接调用服务器端的相关类的方法),执行业务逻辑,将执行结果利用回调函数返回。 6.在回调函数中,得到执行结果后,可以继续编写业务逻辑的相关javascript代码。 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    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模式...

    负责业务逻辑的类都必须实现这个接口

    构造注入是指在接受注入的类中定义一个构造方法,并在参数中定义需要注入的类。 (1)为了让类Business接受XMLData的注入,需要为它定义一个构造方法,来接受XMLData的注入。Business.java的示例代码如下: //******...

    springboot学习思维笔记.xmind

    SpringEL和资源调用 注入普通字符 注入操作系统属性 注入表达式云算结果 注入其他Bean的属性 注入文件内容 注入网址内容 注入属性文件 Bean的初始化和销毁 Java配置方式 注解方式 ...

Global site tag (gtag.js) - Google Analytics