@Scheduled项目中用到的一个小知识点
程序员文章站
2022-07-03 16:10:44
...
今天写东西的时候需要在自定义的请求类中去设置请求的seeionid,于是就写了一个工具类 记录一下;
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就这几个参数吧,我现在开发时够用了,
一般我们都是够用就可以了,不用深入去研究,不够的时候再去搜一下扩展一点,积跬步,至千里,对吧 各位前辈们;
上一篇: java项目中的日志框架使用
下一篇: 在 MFC项目中会经常用到的知识点小结