Sping项目定时任务实现

本文详细介绍Spring框架下四种定时任务实现方式,包括使用@Scheduled注解、解决Quartz定时任务包冲突问题及其配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Sping项目定时任务实现方法

下面博客详细介绍了4中实现方法:
http://blog.youkuaiyun.com/puma_dong/article/details/38032487?utm_source=tuicool&utm_medium=referral

2.使用spring @Scheduled注解执行定时任务

参考博客:http://blog.youkuaiyun.com/sd4000784/article/details/7745947

注意使用问题:

  • <task:annotation-driven/> 没配置scheduler,spring默认只会开一个线程(实测为:Thread
    name: pool-1-thread-1)。配置demo如下:
<task:executor id="executorSpring" pool-size="5" />
<task:scheduler id="schedulerSpring" pool-size="10" />
<task:annotation-driven executor="executorSpring"
        scheduler="schedulerSpring" />
  • spring的@Scheduled注解,需要写在实现上;
  • 定时器的任务方法不能有返回值;
  • 实现类上要有组件的注解@Component,@Service,@Repository等;主要目的告诉spring将其注册为组件,一般用@Component

3.quartz 实现定时任务包冲突问题

项目使用maven构建,shiro做权限控制,此时再使用quartz 做定时任务会出现jar包冲突问题如下:

shiro-quartz 目前最新版是1.4.0-RC2,仍然使用quartz 1.6,基于spring4.X 的项目使用quartz 2.3 ,故出现jar包冲突问题。

解决方法:

  1. 修改源码-重写shiro-quartz包(只有两个类)
  2. 项目隔离(将定时任务单独做一个项目)

第二种就不做介绍了,介绍第一种:(shiro升级quartz到2.1.6版本)详细参考下面博客:
http://nonobaba.iteye.com/blog/2312468

上面博客,最后在XML配置文件中有一点没写清楚(完整的配置文件添加内容如下):

<!-- 会话管理器 -->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
</bean>

<bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.quartz.QuartzSessionValidationScheduler2">
    <property name="sessionValidationInterval" value="1800000" />
    <property name="sessionManager" ref="sessionManager" />
</bean>

通过sessionManager的层次结构,选择DefaultWebSessionManager。

这里写图片描述

4.使用技巧

可以在maven中央仓库查看最新版本:http://search.maven.org/

中央仓库速度有点慢的,可以使用阿里的仓库,maven settings.xml添加:

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值