Sping项目定时任务实现

xiaoxiao2021-02-28  87

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

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

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

参考博客:http://blog.csdn.net/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包冲突问题。

解决方法:

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

第二种就不做介绍了,介绍第一种:(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>
转载请注明原文地址: https://www.6miu.com/read-85295.html

最新回复(0)