美文网首页
SpringTimer

SpringTimer

作者: _FireFly_ | 来源:发表于2020-11-29 16:35 被阅读0次

依赖的jar包

JavaTimer (原生的方式)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class JavaTimer {

    //做一个小计时器
    //模拟每天晚上  给所有同学发送短信(邮件)

    public static void main(String[] args) throws ParseException {
        System.out.println("准备做坏事儿啦~~~");
        //用来存储用户的名字  手机号  邮箱。。。
        //最好创建一个集合(随时扩容)
        String[] userArray = {"博哥","艾薇","语晴","Andy","Ella","Doris"};
        ArrayList<String> userList = new ArrayList(Arrays.asList(userArray));
        //每天晚上凌晨2点 发送垃圾短信
        //需要处理一下自己定义的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
        //可以将自定义第一个字符串格式  转化为Date     数据库中的to_date('值','格式')函数
        Date firstTime = sdf.parse("2020-05-25 15:38:30");
        //可以找一个计时器对象来帮我们倒计时  时间到了就做事
        Timer timer = new Timer();
        //让timer帮我们做事情
        timer.schedule(new TimerTask(){
            @Override
            public void run() {//最终的任务
                for(String user : userList){
                    System.out.println("给"+user+"发送一条信息:[阿拓老师很帅!!!]");
                }
            }
        },firstTime,3000);
    }
}

基于spring的timer

SpringTask

import java.util.ArrayList;

/**
 * 可以理解为是刚才的那个Task
 * 类中只有一个具体的事情(任务)
 * 没有timer帮我们做倒计时
 */
public class SpringTask {

    private ArrayList<String> userList = new ArrayList();

    {
        userList.add("博哥");
        userList.add("艾薇");
        userList.add("语晴");
        userList.add("Andy");
        userList.add("Ella");
        userList.add("Doris");
    }

    //具体的事情(刚才那个任务的方法)
    public void doSomething(){
        for(String user : userList){
            System.out.println("给"+user+"发送一条信息:[阿拓老师很帅!!!]");
        }
    }
}

TestMain

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestMain {

    public static void main(String[] args) {
        BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");
    }
}

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 刚才我们自己定义的那个任务类 交给Spring来管理 -->
    <bean id="springTask" class="springtimer.SpringTask"></bean>

    <!-- 创建一个spring提供好的计时器对象 用来做倒计时管控(可以理解为刚才的Timer对象) detail细节 详述 -->
    <!-- quartz-2.3.2.jar spring-context-support.jar -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="springTask"/>
        <property name="targetMethod" value="doSomething"/>
    </bean>

    <!-- 创建一个spring提供的触发器对象 一旦上面的目标对象及方法确定 触发器就开始进行实践的计算及循环 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetail"/>
        <property name="cronExpression" value="30/5 17 16 * * ?"/>
    </bean>

    <!-- 将我们设置好的触发器对象 放置在一个Spring管理的集合对象中 SchedulerFactoryBean -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
            </list>
        </property>
    </bean>

</beans>

相关文章

  • SpringTimer

    依赖的jar包 JavaTimer (原生的方式) 基于spring的timer SpringTask TestM...

网友评论

      本文标题:SpringTimer

      本文链接:https://www.haomeiwen.com/subject/pyjmiktx.html