1.基本配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 打开Spring的自动扫描机制 -->
<context:component-scan base-package="com.sshdemo"/>
<!-- 打开aop注解支持 -->
<aop:aspectj-autoproxy/>
<!-- 定义数据源Bean,使用C3P0数据源实现 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!-- 指定连接数据库的驱动 -->
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<!-- 指定连接数据库的URL -->
<property name="jdbcUrl" value="jdbc:mysql://localhost/ssh" />
<!-- 指定连接数据库的用户名 -->
<property name="user" value="root" />
<!-- 指定连接数据库的密码 -->
<property name="password" value="root" />
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="40" />
<!-- 指定连接池的最小连接数 -->
<property name="minPoolSize" value="10" />
<!-- 指定连接池的初始化连接数 取值应在minPoolSize与maxPoolSize之间。默认: 3 -->
<property name="initialPoolSize" value="5" />
<!-- 解决Mysql中的8小时问题: -->
<!--最大空闲时间,25000秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="25000" />
<!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false -->
<property name="testConnectionOnCheckin" value="true" />
<!--每18000秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="18000" />
</bean>
<!--定义了Hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 配置Hibernate的参数 -->
<property name="hibernateProperties">
<props>
<!-- 指定数据库的方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- JDBC执行批量更新语句的大小 清除缓存(定期清除缓存,减小压力 -->
<prop key="hibernate.jdbc.batch_size">30</prop>
</props>
</property>
<property name="mappingResources">
<!-- 映射的文件 -->
<list>
<value>com/sshdemo/model/Hibernate.hbm.xml</value>
</list>
</property>
</bean>
<!-- aop拦截 -->
<aop:config>
<aop:aspect id="DemoImp" ref="aspectDemoImp">
<aop:pointcut expression="execution(* com.sshdemo.service.imp.*.*(*))" id="myPointCut"/>
<aop:before pointcut-ref="myPointCut" method="checkSecurity"/>
<aop:around pointcut-ref="myPointCut" method="doLoggInfo"/>
<aop:after pointcut-ref="myPointCut" method="doTranscation"/>
</aop:aspect>
</aop:config>
<bean id="aspectDemoImp" class="com.sshdemo.aspect.AspectDemoImpl"/>
</beans>
2.事务管理
aop
<!-- 事务处理 (aop:config)-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 采用@Transactional注解方式使用事务 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager"/> -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" propagation="NOT_SUPPORTED" read-only="true"/>
<tx:method name="insert*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config >
<aop:pointcut expression="execution(* com.sshdemo.service.imp.*.*(*))" id="txPointCut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>
3.任务调度配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- QuertZ任务调度 -->
<bean id="myQuertZ" class="com.sshdemo.quartZ.MydemoQuartZ"></bean>
<bean id="testQuartZ" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myQuertZ"/>
</property>
<property name="targetMethod">
<value>doRepeatReport</value>
</property>
</bean>
<!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是TestQuartZ,
即触发器去触发哪个bean..并且我们还定义了触发的时间:每天5:17pm-->
<bean id="quertZDemo" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="testQuartZ"/>
</property>
<property name="cronExpression">
<!-- 触发时间(表达式) -->
<value>0/10 * * ? * *</value>
</property>
</bean>
<!--管理触发器的总设置,管理我们的触发器列表,可以在bean的list中放置多个触发器。
-->
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="quertZDemo"/>
</list>
</property>
</bean>
</beans>
分享到:
相关推荐
《Spring任务调度配置详解:Spring+Quartz的整合应用》 在Java开发中,任务调度是不可或缺的一部分,Spring框架提供了与Quartz集成的能力,使得我们可以方便地管理和执行定时任务。本文将详细介绍如何通过Spring和...
Spring中的任务调度是实现应用程序自动化运行任务的重要工具,而Quartz是Java领域广泛使用的开源任务调度框架。...在实际开发中,你可以结合Spring的AOP、事务管理等特性,构建出更加复杂的任务调度系统。
通过Spring的配置和依赖注入,可以将任务的定义与执行解耦,使得任务调度更加灵活和易于维护。在这个小例子中,我们看到了如何定义一个简单的Job和Trigger,并在Spring配置中进行集成。实际上,你可以根据需求定义多...
在SSM框架中,Spring的任务调度可以轻松地与其他组件整合,通过配置即可定义任务的执行周期、触发条件等。 在实际项目中,任务调度管理往往涉及到多线程和并发控制,确保任务的有序执行和资源的合理分配。开发者还...
@Scheduled注解允许开发者在方法上直接声明定时任务,而XML配置则提供了一种灵活的方式来定义和管理这些任务。这两种方式都可以利用Spring的ApplicationContext生命周期来管理和启动这些定时任务。 接下来,我们看...
通过对这些文件的深入学习和理解,你可以掌握如何在Spring环境中配置和使用Quartz进行任务调度,这对于构建有定时任务需求的应用程序非常有帮助。这个项目提供了实践经验,有助于开发者提升在企业级应用开发中的技能...
通过Spring,我们可以将Quartz的配置和管理集成到Spring的上下文中,这样可以更加方便地管理和控制定时任务。 集成步骤主要包括以下几点: 1. **引入依赖**:在项目的pom.xml文件中添加Quartz和Spring的依赖库。 ...
它通过容器管理组件及其依赖关系,使得开发者不再需要手动创建对象,而是由Spring容器负责实例化、装配和管理。这样可以降低代码的耦合度,提高可测试性和可维护性。在XML配置文件中,我们可以定义bean的定义,指定...
要实现一个完整的任务调度系统,除了对Quartz调度器的使用和Spring框架的整合外,还需要考虑安全性、事务管理、错误处理以及性能优化等方面。例如,要保证作业执行的安全性,可以使用Spring Security来管理对作业...
Spring框架提供了一个强大的任务调度模块——Spring Task,也被称为Spring Batch,它支持基于时间的任务调度和基于事件的任务触发。 首先,我们需要在`pom.xml`文件中添加Spring相关的依赖。这通常包括`spring-...
在这个场景下,它提供了对Quartz的集成,使得我们能够在Spring应用上下文中配置和管理Quartz的Job和Trigger,从而实现基于Spring的任务调度。 在Spring中使用Quartz进行任务调度的步骤大致如下: 1. 引入Quartz和...
本文将深入探讨如何利用EXTJS4开发任务调度管理系统,并结合SpringMVC、iBatis、Hibernate和Spring等技术进行后端整合,打造高效稳定的企业级应用。 首先,EXTJS4的核心在于其组件化的设计理念。在任务调度管理系统...
在Spring框架中整合Quartz,可以充分利用Spring的依赖注入(DI)和AOP特性,实现灵活、可扩展的任务调度。下面我们将深入探讨Quartz任务调度的基本概念、与Spring的整合方式以及如何在项目中应用。 一、Quartz基本...
其次,`spring-context-support.jar`也是必需的,因为它提供了对各种实用工具类库的支持,其中包括了对任务调度的支持。这个jar包中包含了`org.springframework.scheduling`包,里面包含了用于实现定时任务的接口和...
通过合理配置,你可以创建复杂的时间调度策略,并利用Spring的依赖注入和事务管理功能,实现高度可维护和可扩展的后台任务。在实际项目中,根据需求调整上述步骤,结合日志、异常处理和数据库操作,可以构建出完善的...
与Spring结合,我们可以利用Spring的依赖注入(DI)和声明式事务管理,使定时任务的管理和维护变得更加灵活和便捷。 要实现"spring+quartz整合,动态管理定时任务",首先需要在项目中引入Spring和Quartz的相关依赖...
在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...
7. **监控与管理**:一旦集成完成,你可以通过Spring的管理接口或者Quartz提供的JMX支持来监控和管理定时任务,如暂停、恢复、删除任务,或者查看任务状态。 除了基本的集成,还可以利用Spring的特性如AOP进一步...
将Spring与Quartz结合,可以方便地在Spring应用中配置和管理定时任务。首先,你需要在Spring的配置文件中声明一个`SchedulerFactoryBean`,这将初始化并管理Quartz调度器。然后,你可以定义`JobDetail`和`Trigger`,...
5. **Quartz集成**:虽然Spring Task已经很强大,但如果你的项目需要更高级的定时任务调度,如集群支持、持久化任务等,可以集成Quartz库。这时,你还需要引入`quartz`和`spring-quartz`相关的jar包。 6. **测试与...