spring 定时任务?

Posted zxf6

tags:

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

一、什么是定时任务?

我们在项目中遇到的需求: 需要定时送异步请求。

 

二、怎么实现?

 

2.1  mvc中启用定时任务。

 <?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:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">


    <!--spring mvc的配置文件-->
    <!--开启mvc的注解-->
    <mvc:annotation-driven conversion-service="conversionService" >
        <!--配置转换器   转换日期的格式。-->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <property name="dateFormat">
                            <bean class="java.text.SimpleDateFormat">
                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
                            </bean>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!--配置日期转换器-->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.aaa.controller.DateConverter"/>
            </set>
        </property>
    </bean>


    <mvc:default-servlet-handler/>

    <!--扫描器:扫描控制器的注解-->
    <context:component-scan base-package="com.aaa.controller"/>

     <!--4.静态资源注解-->
    <mvc:default-servlet-handler/>
    <!--<mvc:resource mapping="/static/**" location="/static/"/>-->

    <!--3.视图解析器:进行视图解析
       prefix+ 视图名字+suffix
    -->
    <!--5.文件上传的解析器     可以设置相关的属性。-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"/>
        <!--文件上传的大小:单位:字节-->
        <property name="maxUploadSize" value="#10*1024*1024"/>
    </bean>





    <!--&lt;!&ndash; 异常处理  1.  配置解析器 &ndash;&gt;-->
    <!--<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">-->
        <!--&lt;!&ndash;1.1默认的错误视图  发生异常时, 跳转到的页面&ndash;&gt;-->
        <!--<property name="defaultErrorView"  value="error"/>-->
        <!--&lt;!&ndash;1.2 异常的属性   捕获到的错误信息。&ndash;&gt;-->
        <!--<property name="exceptionAttribute" value="ex"/>-->

        <!--&lt;!&ndash;1.3exceptionMappings   &ndash;&gt;-->
        <!--<property name="exceptionMappings">-->
            <!--<props>-->
                <!--<prop key="异常类型1">-->
                    <!--error1-->
                <!--</prop>-->
                <!--<prop key="异常类型2">-->
                    <!--error2-->
                <!--</prop>-->
            <!--</props>-->
        <!--</property>-->
    <!--</bean>-->



    <!--6. 配置一个拦截器   -->
    <mvc:interceptors>
        <!--<mvc:interceptor>-->
            <!--&lt;!&ndash; 拦截的路径  &ndash;&gt;-->
            <!--<mvc:mapping path="/**"/>-->
            <!--&lt;!&ndash; 配置拦截器的bean &ndash;&gt;-->
            <!--&lt;!&ndash;  放行路径 &ndash;&gt;-->
            <!--<mvc:exclude-mapping path="/user/login"/>-->
            <!--<bean class="com.aaa.interceptors.MyIntercept"/>-->
        <!--</mvc:interceptor>-->
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.aaa.interceptors.Demo02"/>
    </mvc:interceptor>

    </mvc:interceptors>


    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/"/>   <!--视图前缀-->
        <property name="suffix" value=".jsp"/>  <!--视图后缀-->
    </bean>

    <!--授权   -->
    <aop:config ></aop:config>


    <!--启用定时任务。   导包   spring frame word. org/schema/task-->
    <task:annotation-driven></task:annotation-driven>

</beans>

 

2.2  控制层中创建SchController  

package com.aaa.controller;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
*     定时任务?

    需求:
    1.定时发送异步请求
    2.使用java计时器,自启动的servlet中,线程(Thread,Thread sleep)

    使用  Schedule组件:
    1.配置注解。

    1.1  mvc中 启用定时任务。
    1.2  导包  【spring frame word. org/schema/task】
    1.3  创建控制器  加入 schedule的注解。
    1.4  秒分时日月年。  / 代表 每的意思

    “0/5 * * * * *”  就是每五秒执行一次。
*
* */
@Controller
public class SchController 
    @Scheduled(cron = "0/3 * * * * ?")
    public void task1()
        //日期格式的转换。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = new Date();
        String nowTime = sdf.format(date);
        System.out.println("每三秒执行一次, 你好世界!"+nowTime);
    

 

2.3 属性说明。

技术图片

 

 2.4 字符含义

技术图片

 

2.5 演示

技术图片

 

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

spring多个时间点定时任务怎么配

Spring定时任务为啥没有执行

如何在spring中配置定时任务

Spring定时任务为啥没有执行

如何在spring中配置定时任务

使用spring的定时任务时遇到重复执行