@Scheduled项目中用到的一个小知识点

今天写东西的时候需要在自定义的请求类中去设置请求的sessionid,于是就写了一个工具类 记录一下;

package com.energetic.energetic.util.scheduler;


import com.alibaba.fastjson.JSONObject;
import com.energetic.energetic.service.face.sense.SenseBoxDbService;
import com.energetic.energetic.util.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


/**
 * 初始化学生人员宿舍信息
 * @author Administrator
 *
 */
@Component //factory
public class SenseBoxLoginScheduler {

    @Autowired
    private SenseBoxDbService senseBoxDbService;

    public static  String  variable="";

    /**
     * 每天中午十二点
     */
    //@Scheduled(cron="*/5 * * * * ?") //没5秒执行一次
    @Scheduled(fixedDelay = 25*1000)//30分钟执行一次
    public void getLoginSessionid() {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("user_name","admin");
        jsonObj.put("user_pwd","admin");
        String json = jsonObj.toJSONString();
        ResponseResult login = senseBoxDbService.login(json);
        System.out.println("session的值是"+login.getData());
        variable= (String)login.getData();
        System.out.println(variable);

    }
}

上面写了一个定时器,定时器中我定义了我获得这个 data 也就是sessionid 我用variable接收了一下,定义成全局的静态变量, 之后在请求中设置一些 就可以使用了;


/**
 * 批量下发请求的工具类
 */
public static String sendPostBeatch(String sURL,Integer lib_id , List <String > multipartFiles ) throws Exception {
  CloseableHttpClient httpClient = HttpClients.createDefault();
  HttpPost uploadFile = new HttpPost(sURL);
  uploadFile.setHeader("sessionid",SenseBoxLoginScheduler.variable);

最后简要的总结一下我今天的这个定义的定时器的作用,由于我自己也需要过一遍,所以就不给提供图像了,俗话说敲一遍之后我就会记的很深刻了,
(1)参数详解:@Scheduled(cron="*/5 * * * * ?")

cron 表达式语法[秒],[分],[时],[日],[月],[周],[年]

允许通配符,秒表示是0-59 或者 -/ 符号 记得这个是秒
中间用空格隔开, 分钟和秒是一样的 0-59 或者 -
/ 小时
和分钟还是一样的,0-23 -*/ 别问我为什么是63, 后面的直接看下面; “ 0 /5 * * * * ?” 就是说如果 秒 分 时 没有值 直接用0 后面没有值的 用通配符表示

1秒是0-59,- * /2分是0-59,- * /3时是0-23,- * /4日是1-31,- * ? / L W5月是1-12 / JAN-DEC,- * /6周是1-7 or SUN-SAT,- * ? / L #7年否1970-2099,- * /
``
其实上面这个注解使用的不是很多  原因是 一般使用定时器我们也就是好比 需要使用 seesionid  或者一些 定时提醒的任务需要用  完全可以使用下面这个参数 就可以了
(2@Scheduled(fixedDelay =5*1000  )延迟   这个注解很简单 只要之哦啊秒毫秒的运算就可以了  这个意思就是 执行一次
5秒后在执行一次 ;
(3)第三个注解的使用
fixedDelayString ="5000“和上边的内阁值是一样的 不同的是 这个支持 占位符的形式  ,好比在 idea的  yml 中配置
一个常量  之后通过这种形式去获取我们需要的session,
time.fixedDelay=5000     之后我们就可以这样定义了 对没错就是@Scheduled(fixedDelayString =${time.fixedDelay}")
是不是很suprised就这几个参数吧,我现在开发时够用了,
一般我们都是够用就可以了,不用深入去研究,不够的时候再去搜一下扩展一点,积跬步,至千里,对吧 各位前辈们;
































  





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值