• 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 演示

  • 相关阅读:
    Flask发送邮件
    python 可调用对象之类实例
    flask 跨域请求
    flask登录插件 flask-login
    flask 更新数据库
    python事物管理及同步锁
    Django signals 信号作用及用法说明
    python中各个response使用
    Ntp时间服务器
    Iptables-主机防火墙设置
  • 原文地址:https://www.cnblogs.com/ZXF6/p/11354598.html
Copyright © 2020-2023  润新知