spring定时器配置

Posted 爱分享社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring定时器配置相关的知识,希望对你有一定的参考价值。

项目有用到定时器,拍给我做,作为小白的我,感觉到压力很大,上网一查,我顿时就笑了、呵呵哒。

整理下我简单测试的spring定时器的代码。

 

1.创建执行定时器的java类

public class TimeTest {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
public void tesTime(){
    logger.info("定时器执行成功!--------------------------------------");
    for (int i = 0; i < 10; i++) {
        System.out.println("i的个数为="+i);
    }
}
}
View Code

2.配置spring的XML文件,文件名spring-time.xml

ps:该文件与项目的spring文件最好是分离的

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:mvc="http://www.springframework.org/schema/mvc"
 7     xsi:schemaLocation="   
 8         http://www.springframework.org/schema/beans   
 9         http://www.springframework.org/schema/beans/spring-beans.xsd   
10         http://www.springframework.org/schema/context   
11         http://www.springframework.org/schema/context/spring-context.xsd  
12         http://www.springframework.org/schema/mvc   
13         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
14 
15     <!-- 要调用的工作类 -->
16     <bean id="timeTestBean" class="com.ssm.cn.time.TimeTest"></bean>
17     
18     <!-- 定义调用对象和调用对象的方法 -->
19     <bean id="timeJobe" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
20         <!-- 调用的类 -->
21         <property name="targetObject" ref="timeTestBean"></property>
22         <!-- 调用类中的方法 -->
23         <property name="targetMethod" value="tesTime"></property>
24     </bean>
25     <!-- 定义触发时间 -->
26     <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
27         <property name="jobDetail" ref="timeJobe"></property>
28         <!-- cron表达式 -->
29         <property name="cronExpression">
30             <value>0/2 * * * * ?</value><!-- 每2秒执行一次 -->
31         </property>
32     </bean>
33     
34     <!-- 总管理类 如果将lazy-init=\'false\'那么容器启动就会执行调度程序 -->
35     <bean id="startQuertz" lazy-init="false" autowire="no"
36         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
37         <property name="triggers">
38             <list>
39                 <ref bean="doTime" />
40             </list>
41         </property>
42     </bean>
43 </beans>
View Code

3.web.xml配置

<!--配置DispatherServlet -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置SpringMVC需要加载的配置文件 spring-dao.xml,spring-service.xml,spring-web.xml 
            Mybatis==>Spring==>SpringMVC -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!--默认拦截所有的请求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
View Code

<param-value>classpath:spring/spring-*.xml</param-value>为主要的,加载spring开头的所有spring-*.xml配置,可以用别的方式,个人习惯。

4.maven所需的jar包

<!-- spring 定时器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
View Code

两个jar包,不要问我为什么这么少,你的项目是用的spring框架,就需要这俩jar包。

什么??你的不是maven项目,好吧。自己百度下载吧。

纯属自己理解,欢迎指正。

 

有的jar文件里没有  CronTriggerBean  类,不要着急,可以用  CronTriggerFactoryBean 代替,具体原理,自己阅读源码吧。

------------------------------------

慢慢成长,慢慢进步。

 

以上是关于spring定时器配置的主要内容,如果未能解决你的问题,请参考以下文章

基于XML和注解的Spring定时器

使用spring@Scheduled进行任务定时

spring中定时器每周执行两次

spring定时器如何配置???

spring schedule定时任务:配置文件的方式

Spring Boot 中配置定时任务,实现多线程操作