- 浏览: 677793 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (141)
- java (58)
- SQL (7)
- java开源 (2)
- javascript (3)
- struts2 (2)
- oracle (6)
- junit (1)
- js报表 (1)
- jQuery (5)
- 插件安装 (1)
- myeclipse (1)
- xfire (1)
- weblogic (1)
- hibernate (6)
- loading (1)
- jbpm (3)
- 物语 (0)
- android (14)
- spring (20)
- BigDecimal (1)
- view (1)
- 总结 (2)
- application (1)
- Netty (5)
- aop (1)
- redis (7)
- double (1)
- restful (1)
- cache (3)
- profile (1)
- redisTemplate (1)
- poi (3)
- excel导出 (1)
- mysql (7)
- group (4)
- replication (4)
- proxysql (1)
- windows (1)
- version (1)
- mongodb (2)
- RocketMQ (1)
- MQ (1)
- RSA (1)
- 日志 (2)
- ip (1)
- socket (1)
- hibernate-validator (1)
- delayQueue (1)
- spring-retry (1)
- rabbitmq (3)
- httpclient (1)
- tools (1)
- 增量发布 (1)
- web (3)
- spring-boot (5)
- druid (2)
- pageHelper (1)
- freemarker (1)
- RequestMapping (1)
- 性能优化 (2)
- springBoot (1)
- docker (2)
- 安全 (0)
- 国际化 (3)
- websocket (1)
- stomp (1)
- shiro (1)
- 网络安全 (2)
- 锁 (1)
- logback (1)
最新评论
-
changerzhuo_319:
谢谢大佬, 查了一天了没解决
Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在 -
迪伦少校:
spring越来越优秀的同时,也越来越复杂
spring核心技术(1) -
hbxflihua:
ivi13 写道这种方式会有个问题,假如有个商户的交易量特别大 ...
使用spring-retry实现支付系统异步通知 -
ivi13:
这种方式会有个问题,假如有个商户的交易量特别大,通知全部失败, ...
使用spring-retry实现支付系统异步通知 -
ckxlnd:
挺好的 有借鉴意义
重写DispatcherServlet获取springmvc 所有RequestMapping的url
需求如下:
客户档案录入一个月后,还没有签订合同的,需要提示业务经理,看是否需要更换业务员。是否更换取决于业务经理本人。
定时监听器的功能:每天定时清除已过期的客户档案对应的业务员。
做法如下:
用spring的quartz实现定时作业。操作前需要准备一个jar文件和一个xml文件:
quartz-all-1.6.0.jar和quartz.properties
第一步:查询出客户档案中已过期的客户档案。
以下是客户档案映射文件的查询语句:查询出未签订合同并已超过一个月的客户
<!-- 查询已过期客户列表 -->
<select id="queryOutOfDateCustomerList" resultMap="abatorgenerated_CustomerrecordtblResult" >
<![CDATA[
select * from CUSTOMER_RECORD_TBL cus where (
select count(*) from contract_tbl con where cus.customer_id=con.customer_id) =0
and cus.input_date<=getdate()-30
]]>
</select>
第二步:在Service中添加定时方法:
/**
* 定时去除过期客户档案业务员
* @throws Exception
*/
public void updateOutOfDateTimer()throws Exception{
try {
String startTimerOnCustomerRecord= Toolkit.getInstance().getSingleConfig("startTimerOnCustomerRecord");
if("no".equalsIgnoreCase(startTimerOnCustomerRecord)){
System.out.println("【"+new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date())+"】,定时更改开始");
//查询出已过期的客户
List<Customerrecordtbl> customers=customerrecordtblDAO.queryOutOfDateCustomerList();
for(Customerrecordtbl customer:customers){
customer.setSalesman("");//除去业务员
}
//执行批量修改
customerrecordtblDAO.updateProcessBatch(customers);
System.out.println("【"+new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date())+"】,定时更改结束!");
}
} catch (SQLException e) {
logger.error("定时去除过期客户档案对应业务员:" + e.getMessage(), e);
throw new CustomerRecordException("定时去除过期客户档案对应业务员:",e);
}
}
提示:该方法不必在接口中声明。
上面的方法中使用了配置文件的开关,大可不必去理会。内容如下:
String startTimerOnCustomerRecord= Toolkit.getInstance().getSingleConfig("startTimerOnCustomerRecord");
if("no".equalsIgnoreCase(startTimerOnCustomerRecord))
这里还用了iBATIS的批量修改的方法,具体内容如下:
/**
* 批量修改客户档案信息
* @param list
* @throws SQLException
*/
public void updateProcessBatch(final List<Customerrecordtbl> list) throws SQLException {
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
int batch = 0;
for(Customerrecordtbl vo:list){
//调用获取sequence的方法。如果没有的话就去掉这行代码。
//inCodeVO.setInside_Number_Id(getNextId());
//参数1为:ibatis中需要执行的语句的id executor.update("CUSTOMER_RECORD_TBL.abatorgenerated_updateByPrimaryKeySelective", vo);
batch++;
//每200条批量提交一次
if(batch==200){
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
第三步:在spring配置文件中配置
<bean id="methodInvokingJobWips" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="customerRecordMan"/>//Service注入类
</property>
<property name="targetMethod">
<value>updateOutOfDateTimer</value>//定时修改的方法
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobWips"/>
</property>
<property name="cronExpression">
<value>0 0/1 8-22 * * ?</value>//cron表达式
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref local="cronTrigger"/></list>
</property>
</bean>
要注意:定时器在每次重启服务时,均会调用。其次再根据上面红色部分的cron表达式设置定时时间。
发表评论
-
通过spring-context创建可执行jar
2019-04-23 13:52 10901、新建一个maven工程; 2、pom.xml中 ... -
spring核心技术(1)
2019-01-31 18:09 1215#spring核心技术 ## ... -
整合spring、shiro、redis实现会话共享
2019-01-29 15:42 2736什么是Shiro? Apache旗下强大灵活的开源安全 ... -
Spring4+WebSocket+Socket+STOMP+Jetty构建示例
2019-01-19 16:55 1307Spring 4引入了WebSocket API,浏 ... -
应用国际化(3)
2018-12-27 21:13 825前两篇介绍了应用国际化的注意事项和提示语国际化的简单实现。后 ... -
应用国际化(2)
2018-12-26 20:39 800上一篇介绍了应用国际化需要考虑的问题,本篇介绍后端如何实现 ... -
应用国际化(1)
2018-12-26 20:08 828最近在做数字资产交 ... -
使用docker部署spring-boot多模块依赖工程
2018-10-11 17:33 6042项目架构 dw | |----dw-demo(接口d ... -
快速搭建一个简易的spring web工程
2017-12-11 20:48 6861、新建一个maven project; ... -
简单封装spring-rabbit实现mq组件化
2017-08-02 21:39 3299网上有关spring和rabbitmq整合的博文比比皆是, ... -
通过spring-data-redis实现redis分布式缓存(增强版)
2017-07-06 20:50 80571、引入spring-data-redi ... -
基于spring的redisTemplate的缓存工具类
2016-10-01 20:38 695441、spring相关配置如下: < ... -
使用spring profile实现多环境切换的简单实现
2016-10-01 18:41 11454多环境配置一直都是一件头疼不已的事情,spring自3.1 ... -
基于spring的缓存注解实现
2016-09-22 15:25 1751时间原因,这里只贴代码,见谅。 package com.r ... -
使用Spring框架实现RESTful
2016-09-11 20:48 1305RESTful web服务最近有多流行已经无需我多评价。是的 ... -
spring-data-redis RedisTemplateUtils工具类
2016-08-29 15:06 9495package com.lh.core.core.util; ... -
spring-data-redis 扩展实现时效设置
2016-08-28 20:23 20378spring目前在@Cacheable和@CacheEvi ... -
spring自定义注解样例
2016-05-17 17:21 796样例的具体内容不在博客里展示,大家自行下载源码看看吧。 -
Hibernate 与spring jdbcTemplate共享事物的管理
2012-08-24 19:35 6298公司的项目框架搭建可 ... -
Hibernate缓存的使用
2011-09-20 12:59 1241[size=small]Hibernate缓存是 ...
相关推荐
要使用Spring定时任务,首先需要在配置类上启用定时任务支持,通过添加`@EnableScheduling`注解。这会启动一个后台任务调度器,定期检查是否有待执行的任务。 3. **使用@Scheduled注解** `@Scheduled`注解可以...
通过示例代码,我们将展示如何使用Spring监听器和定时任务来实现批处理任务的执行。 Spring监听器 在Spring框架中,监听器是指实现ServletContextListener接口的类,用于监听ServletContext的生命周期事件。监听器...
- 在Spring Boot应用中,我们可以创建一个`@Component`,并使用`@EventListener`注解来监听特定事件,或者自定义一个`ApplicationListener`监听`ApplicationReadyEvent`,在应用启动后开始监听文件夹。 - 使用`@...
Spring定时任务支持更多的功能,比如任务执行的并发控制、任务执行的监听器、以及使用Quartz等第三方调度库进行更复杂的任务调度。 总结,Spring定时任务为开发者提供了方便的API和注解,使我们可以轻松地在Java...
在传统的Servlet 2.x环境中,可以使用`ServletContextListener`监听器,在`contextInitialized`方法中启动任务调度。而在Servlet 3.0及以上版本,可以利用`@WebServlet`或`@WebListener`注解。例如: ```java @Web...
总结起来,Spring动态配置定时任务的关键在于:1) 使用`@Scheduled`或`TaskScheduler`来调度任务;2) 将定时任务配置存储在数据库中,以便于管理和动态更新;3) 设计服务类以响应数据库的变更,及时调整任务的执行...
4. **自定义功能**:在提供的描述中提到,这个demo只实现了定时监听和周期性执行任务的基础功能,实际的应用场景可能需要添加邮件发送、文件删除等自定义任务。这只需要在`Runnable`任务中添加相应逻辑即可。例如,...
Spring Task是在Spring 3.0之后引入的,它使用起来相对简单,支持线程池,可以高效处理不同的定时任务。Spring Task可以通过注解或XML配置文件来配置任务。如果使用注解的方式,仅需要在方法上加上@Scheduled注解,...
在Spring框架中,有三种主要的定时任务机制可供开发者选择,分别是基于Quartz的定时机制、Spring自己的`@Scheduled`注解以及Java的`java.util.Timer`类。在这篇文章中,我们将重点讨论基于Quartz的定时机制,因为它...
本资源包含了一份关于Spring定时任务的详细教程,具有实例和具体操作步骤,适合需要深入了解和使用Spring定时功能的开发者。 Spring定时任务主要依赖于`Spring Task`模块,它提供了`@Scheduled`注解和`Task...
Spring定时任务是Spring框架提供的一种强大的任务调度机制,它允许开发者在应用中安排周期性任务的执行,无需依赖外部的调度服务如Quartz或cron。自Spring 3.0版本开始,Spring引入了`@Scheduled`注解和`Task...
Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...
为了使Spring定时任务在Web应用启动时自动加载和运行,需要在`web.xml`中添加相应的初始化参数和监听器: ```xml <!-- 设置Spring上下文配置文件的位置 --> <param-name>contextConfigLocation <param-value>/...
Spring框架是Java开发中广泛使用的轻量级框架,它提供了丰富的功能,其中之一就是对定时任务的支持。`@Scheduled`注解是Spring Framework中用于创建定时任务的重要工具,它允许开发者在不重启应用的情况下,实现定时...
1.在Spring Boot中,你可以使用@Scheduled注解来创建定时任务。将@Scheduled注解与方法一起使用,指定任务执行的时间表达式。 2.使用Spring的TaskScheduler: Spring提供了TaskScheduler接口和相关实现,用于任务...
Spring提供了`SchedulerAwareRunnable`,可以用于监听Scheduler的状态。Quartz自身也提供了Web管理界面(如`QuartzAdmin`),可以在线查看和管理Job和Trigger。 8. **异常处理和重试策略** 可以通过实现`org....
Quartz是Java领域广泛使用的定时任务库,它支持复杂的调度策略,如周期性执行、一次性任务等。在这个系统中,Quartz作为核心的定时任务引擎,允许管理员动态创建、编辑、删除和修改定时任务。所有的任务配置信息,...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Spring的定时调度功能则为企业级应用提供了强大的任务...了解并熟练掌握Spring的定时调度和Quartz的使用,对提升企业级应用的自动化水平具有重要意义。
**Spring-task定时任务详解** Spring-task是Spring框架的一部分,它为开发者提供了强大的任务调度和执行功能,使得在Java应用中实现定时任务变得简单易行。本文将深入探讨Spring-task的注解方式和XML配置方式的使用...