`

quartz2与springmvc集成的2种方式

阅读更多

 

quartz2与springmvc集成的2种方式

 

第一种方式:jobDetail使用MethodInvokingJobDetailFactoryBean

 

(1)spring配置

<!-- 定时任务Bean: quartz获取不到注解的userService, 使用xml文件再配一个UserService对象set注入Job -->

<bean id="myJob" class="cn.mgr.job.demo.MyJob">

<property name="userService" ref="_userService"></property>

</bean>

 

<bean id="_userService" class="cn.mgr.user.service.UserService"></bean>

 

<!-- 定义调用对象和调用对象的方法 -->

<bean id="myJobDetail"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<!-- 调用的类 -->

<property name="targetObject" ref="myJob" />

<!-- 调用类中的方法 -->

<property name="targetMethod" value="execute" />

<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->

<property name="concurrent" value="false" />

</bean>

 

<!-- quartz-2.x后的配置 -->

<bean id="myJobTrigger"

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<property name="jobDetail">

<ref bean="myJobDetail" />

</property>

<property name="cronExpression">

<value>0/5 * * * * ?</value>

</property>

</bean>

 

 

<!-- 总管理类:如果lazy-init='false',那么容器启动后就会执行调度程序 -->

<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->

<bean name="simpleScheduler" lazy-init="true" autowire="no"

class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list>

<ref bean="myJobTrigger" />

</list>

</property>

<property name="autoStartup" value="true"/>

</bean>

 

(2)Job

public class MyJob {

 

private IUserService userService;

 

public void execute(){

System.out.println((new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS")).format(new Date()));

System.out.println(userService.getMessage() + "%S%%");

 

}

 

public void setUserService(IUserService userService) {

this.userService = userService;

}

 

}

 

第二种方式:jobDetail使用org.springframework.scheduling.quartz.JobDetailFactoryBean

 

(1)spring配置

<bean id="roleService2" class="cn.mgr.role.service.RoleService"></bean>

 

<!-- 定义调用对象和调用对象的方法 -->

<bean id="simpleJobDetail"

class="org.springframework.scheduling.quartz.JobDetailFactoryBean">

<!-- 调用的类 

<property name="targetObject" ref="simpleJob" />-->

<!-- 调用类中的方法

<property name="targetMethod" value="execute" />  -->

<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 

<property name="concurrent" value="false" />-->

<property name="jobClass" value="cn.mgr.job.demo.SimpleJob" />

        <property name="group" value="TEST" />

        <property name="durability" value="true" />

</bean>

 

<!-- quartz-2.x后的配置 -->

<bean id="simpleJobTrigger"

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<property name="jobDetail">

<ref bean="simpleJobDetail" />

</property>

<property name="cronExpression">

<value>0/5 * * * * ?</value>

</property>

</bean>

 

 

<!-- 总管理类:如果lazy-init='false',那么容器启动后就会执行调度程序 -->

<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->

<bean name="simpleScheduler" 

class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list>

<ref bean="simpleJobTrigger" />

</list>

</property>

<!-- <property name="autoStartup" value="true"/> -->

<!-- 延迟30秒启动Scheduler -->  

<property name="startupDelay" value="20"></property>

                <!-- 通过applicationContextSchedulerContextKey属性配置spring上下文 -->

<property name="applicationContextSchedulerContextKey">  

<value>applicationContext</value>  

</property>  

<!-- <property name="dataSource" ref="dataSource" />       -->

        <property name="schedulerContextAsMap">      

            <map>      

                <!-- spring 管理的service需要放到这里,才能够注入成功 -->      

                <description>schedulerContextAsMap</description>      

                <entry key="roleService2" value-ref="roleService2"/>  

                <entry key="userService" value-ref="userService"/>    

            </map>      

        </property>

<!--         <property name="configLocation" value="classpath:quartz.properties" /> -->

</bean>

 

(2)Job

public abstract class Job extends QuartzJobBean{

 

protected void init(JobExecutionContext context){

Scheduler scheduler = (Scheduler) context.getScheduler();  

DataSource dataSource = null;

//获取JobExecutionContext中的service对象  

SchedulerContext schCtx = null;

try {

schCtx = context.getScheduler().getContext();

} catch (SchedulerException e) {

e.printStackTrace();

}

   //获取Spring中的上下文  

ApplicationContext appCtx = (ApplicationContext)schCtx.get(Const.APPLICATION_CONTEXT);

   //sqlSessionFactory = (SqlSessionFactory)appCtx.getBean(Const.SQL_SESSION_FACTORY);

   dataSource = (DataSource)appCtx.getBean(Const.DATA_SOURCE);

   System.out.println("**** ds = "+ dataSource);

   Object o = appCtx.getBean("roleService2");

   System.out.println("**** roleService = "+ o);

   

   Object userService = appCtx.getBean("userService");

   System.out.println("**** userService = "+ userService);

}

}

 

public class SimpleJob extends Job{

 

private IRoleService roleService;

 

@Override

protected void executeInternal(JobExecutionContext context)

throws JobExecutionException {

init(context);

 

System.out.println("roleService=" + roleService);

}

 

}

 

分享到:
评论

相关推荐

    springMVC+quartz任务调度

    总结来说,SpringMVC 与 Quartz 的结合提供了一种强大的解决方案,可以轻松地在 Web 应用程序中实现复杂的定时任务管理。这种结合充分利用了 Spring 的优点,如依赖注入和面向切面编程,同时也利用了 Quartz 的强大...

    spring+springMVC+mybatis+quartz动态定时任务创建

    Quartz与Spring的集成使得任务的生命周期管理和并发控制变得更加便捷。 结合以上组件,开发者可以创建一个具有强大定时任务功能的系统。例如,可以使用Spring的ApplicationContext来初始化Quartz的Scheduler,然后...

    集成spring,datajpa,springmvc,shiro,freemarker,quartz

    说明:参考了公司的一些项目以及springside,集成了一些常用框架,特色功能如下: shiro: 1.支持shiro数据库配置权限。 2.支持在方法级别上控制权限。 quartz: 1.页面配置Trigger以及选择Job任务来开启定时器。 2...

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    Mybatis+Spring+SpringMVC+quartz多数据源切换

    "Mybatis+Spring+SpringMVC+quartz多数据源切换"的架构设计就是为了满足这样的场景。这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源...

    springmvc+Mybatis+axis2+webservice+quartz作业(整合)

    主流的spring4mvc+Mybatis,并整合了axis2实现webservice接口开发。利用quartz注解实现任务作业功能源码。利用spring RoutingDataSource实现动态数据源切换

    sping springmvc mybatis框架的maven web项目,整合了log4j日志 redis缓存 quartz定时任务

    本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,整合了log4j日志,redis缓存,quartz定时任务,全局配置文件在代码中使用等,controller层/service层/bo层/dao层都...

    springmvc+mybatis+动态定时器quartz

    通过以上介绍,我们可以看到Spring MVC、MyBatis 和 Quartz 的集成可以创建一个强大且灵活的后台系统,能够满足复杂的任务调度需求。这三者之间的协同工作,使得开发者可以专注于业务逻辑,而不用过于关心底层的调度...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    对于动态定时任务,Quartz提供了一种灵活的方式,允许在运行时添加、修改或删除任务。例如,可以创建一个服务接口,通过调用该接口来动态调整Trigger,从而达到改变任务执行频率或暂停任务的目的。 Quartz的集群...

    spring3.1 与 quartz 1.8.6 整合 所有jar

    Quartz可以通过与Spring的集成,实现任务调度的声明式管理,简化了在Spring应用中添加定时任务的过程。 **整合步骤** 1. **引入依赖** 首先,你需要在项目中引入Spring和Quartz的jar包。"spring3.1 与 quartz ...

    springmvc中实现quartz定时任务

    在Spring MVC框架中集成Quartz定时任务是一项常见的需求,它允许开发者在特定时间点执行一些周期性的业务逻辑。Quartz是一个强大的、完全开源的作业调度框架,可以与Java应用程序无缝结合,提供灵活的任务调度功能。...

    SpringMVC4_Spring4_Hibernate4_Proxool_Quartz2_Jackson_Plupload2集成与实例

    包含Spring4.1.1_SpringMVC4_Hibernate4.3.6_Proxool0.9.1_Quartz2.2.1_Jackson2.5.0_Plupload2.1.2的集成 包含集成完整实例代码,代码中具备详细中文注释。详情可参考博客: ...

    spring+springmvc+shiro+quartz

    Quartz可以方便地与Spring集成,通过Spring的Job和Trigger接口来定义和管理任务。 在实际项目中,这四个框架通常会协同工作。Spring作为基础框架,负责整个应用的结构和依赖管理;Spring MVC处理Web请求和响应,...

    Spring3Mvc+Hibernate整合Axis2发布WebService并配置Quartz调度

    本主题聚焦于如何使用Spring3 MVC与Hibernate进行整合,以便更好地处理业务逻辑和数据持久化,并结合Axis2发布Web服务,同时利用Quartz进行任务调度。以下将详细介绍这些技术及其整合过程。 **Spring3 MVC** 是...

    spring,springMvc,mybatis整合cxf,quartz

    Quartz可以与Spring框架深度集成,通过Spring的JobDetail和Trigger定义,轻松地创建和管理定时任务。 整合这些技术,我们通常会遵循以下步骤: 1. 配置Spring:首先,我们需要在Spring配置文件中定义Bean,包括...

    ssm集成quartz完成定时任务

    SSM(Spring、SpringMVC、MyBatis)框架与Quartz的集成是Java开发中常见的一种实现定时任务的方法。Quartz是一个强大的开源作业调度框架,可以用来执行定时任务,而SSM作为主流的Java Web开发框架,为业务逻辑处理...

    Maven 项目 springMVC_Mybatis_Axis2_Task 整合

    《Maven项目:springMVC、Mybatis、Axis2与Task整合详解》 在现代Java开发中,Maven作为项目构建工具,springMVC作为Web层框架,Mybatis作为持久层框架,Axis2用于服务发布,而Task则涉及到任务调度。这些技术的...

    ssm-springMVC-整合Quartz(解决了无法注入service问题)-项目示例

    当需要在Quartz作业中调用由Spring管理的服务时,会出现依赖注入的问题,因为Quartz的工作线程与Spring的ApplicationContext不一致。 为了解决这个问题,我们需要以下步骤: 1. **配置Spring上下文**:首先,在...

    搭建springMVC+Mybatis+quartz+log4j+maven项目

    搭建一个基于SpringMVC、Mybatis、Quartz、Log4j和Maven的项目涉及到多个技术栈的集成与配置,这是一个常见的Java Web开发框架。以下将详细解释这些技术及其在项目中的作用,以及如何进行集成。 **SpringMVC**: ...

    spring+mvc+quartz.rar

    Spring框架以其强大的功能和灵活的扩展性,成为Java开发的首选,而Quartz作为一款开源的作业调度库,能够很好地与Spring集成,提供定时任务的解决方案。本教程将详细讲解如何利用Spring 4.3.15、Spring MVC 4.3.15和...

Global site tag (gtag.js) - Google Analytics