场景: 项目需要在项目启动后从数据库初始化一些数据进入redis , 但是没有很适合 的监听器去实现 , 监听 老是在dao初始化之前触发。

解决方法:自定义类实现 ApplicationRunner 接口 重写 run() 方法

------------------------------------------------------------------------------------------------------------------------------------------

 1 /**
 2  * @author :CX
 3  * @Date :Create in 2018/8/31 11:39
 4  * @Effect : 监听项目启动成功后, 每次启动给启动序列码+1(tb_sb_idcounter表) ,
 5  *              并吧最新的序列码写入redis
 6  */
 7 @Component
 8 @Order(10) //执行的优先级
 9 public class StartIdListener implements ApplicationRunner {
10     Logger logger =  Logger.getLogger(this.getClass().getName());
11     //注入针对数据库的dao
12     @Autowired
13     @Qualifier("dao")
14     protected IDao dao;
15     //注入针对redis的dao
16     @Autowired
17     RedisUtil redisUtil ;
18
19     // 系统启动序列码在redis中保存的key
20     private String SYSTEM_NUMBER = "bigcustomer:systemNumber_fh23" ;
21     // 本次啓動 , 通用id 执行到几了, 继续执行
22     private String FUNIQUEID_NUMBER = "bigcustomer:funiqueid_number" ;
23     /**
24      *@参数
25      *@返回值
26      *@创建人  cx
27      *@创建时间
28      *@描述 zaispringboot启动后执行
29      */
30     @Override
31     public void run(ApplicationArguments args) throws Exception {
32         //数据库启动序列码 +1
33         logger.info("项目启动成功, 开始获取启动码!");
34         try{
35             dao.update("util-baseIdUpOne");
36         }catch (Exception e){
37             throw  new RuntimeException("启动失败,启动序列码执行+1 操作时异常!请检查 tb_sb_idcounter表");
38         }
39         // 获取最新数据
40         TbSbIdcounterModel first = dao.entity(TbSbIdcounterModel.class).first();
41         if(null == first || null == first.getFH23()){
42             throw  new RuntimeException("启动失败,启动序列码为空,请检查 tb_sb_idcounter表");
43         }
44         Long fh23 = first.getFH23();
45         // 保存启动序列码到redis
46         redisUtil.set(SYSTEM_NUMBER,fh23);
47         // 初始化本次 轮训的编码
48         redisUtil.set(FUNIQUEID_NUMBER,1);
49
50
51         logger.info("获取启动码成功, 本次系统启动码为:" + fh23);
52     }
53 }

转载于:https://www.cnblogs.com/cx987514451/p/9590529.html

springboot2.X 在项目启动后执行一段自定义代码相关推荐

  1. 为什么当项目启动后执行两次过滤器 再进行访问资源时执行一次过滤器

    为什么当项目启动后执行两次过滤器 再进行访问资源时执行一次过滤器 粗线的理解,启动项目后进行了两次请求,访问两次过滤器.访问资源时只进行一次请求,所以访问一次过滤器. 于是为了更加清楚地看清在启动项目 ...

  2. Springboot 项目启动后执行某些自定义代码

    Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...

  3. JAVA - 项目启动后执行定时任务

    项目启动后不执行定时任务?? 这个得在启动类上加 @EnableScheduling 注解 @EnableScheduling @SpringBootApplication public class ...

  4. Springboot项目启动后立即执行方法

    Springboot项目启动后执行方法,有三种实现方式. 此篇博客介绍的方法可以在程序启动时加载一些自定义的监听器之类的,例如Socket服务的监听器,此时如果使用@PostConstract,Soc ...

  5. docker启动后自动退出_Spring Boot项目启动后如何自动执行逻辑

    1. 前言 不知道你有没有接到这种需求,项目启动后立马执行一些逻辑.比如简单的缓存预热,或者上线后的广播之类等等.如果你使用 Spring Boot 框架的话就可以借助其提供的接口CommandLin ...

  6. springboot项目启动成功后执行一段代码的两种方式

    实现ApplicationRunner接口 package com.lnjecit.lifecycle;import org.springframework.boot.ApplicationArgum ...

  7. java启动时执行_java怎么实现项目启动时执行指定方法

    本文实例为大家共享了java项目启动时执行指定方法,供大家参考,详细内容如下 想到的就是监听步骤如下: 1.配置web.xml com.listener.InitListener 2.编写InitLi ...

  8. Whitelabel Error Page : spring boot项目启动后,无法访问@RequestMapping标注的请求

    springboot项目创建后,会自动生成一个标注有@SpringBootApplication注解的类,直接执行该类的main方法即可启动web项目,毕竟springboot已经内置了tomcat容 ...

  9. java 项目启动初始化_Spring项目启动时执行初始化方法

    一.applicationContext.xml配置bean init-method="initKeyWord"> classpath:sensitive-word.xml ...

最新文章

  1. 设置centos7语言显示环境
  2. Java设计模式(十一):组合设计模式
  3. Define and Publish Platform Events
  4. 升级鸿蒙的十款手机,华为郑重宣布,第二批升级鸿蒙的十款手机,荣耀30系列上榜!...
  5. centos7 yum源安装ruby27方法
  6. php cgi进程很多win2008,php cgi.exe 太多 在 windowserver2008 apache 这个怎么样限制下?...
  7. 慕课python第六周测验答案_中国大学慕课答案第八单元测试答案_Python语言程序设计考试测验答案...
  8. php放量文档,成交量放量过顶买入法(图解)
  9. java 皮尔逊相关系数_皮尔逊相关系数
  10. android activity 主题,android activity 主题
  11. 本特利框架3500/05-01-01-CN-00
  12. access数据库应用系统客观题_Access数据库程序设计模拟题
  13. Unity2020打包ARCore项目apk
  14. python输入生日输出星座_怎么利用python输出星座
  15. 多变量微积分笔记20——球坐标系
  16. 8 款好用的 React Admin 管理后台模板推荐
  17. 吴昊品游戏核心算法 Round 8(特别篇) —— 吴昊教你打麻将(牌型分析AI)
  18. c语言函数的省略号,c++中的省略号
  19. python 伪造源ip_Python实现爬虫设置代理IP和伪装成浏览器的方法共享
  20. 用 JavaScript 编写日历

热门文章

  1. 201521123060 《Java程序设计》第10周学习总结
  2. bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
  3. poj2478 Farey Sequence (欧拉函数)
  4. 多个Storyboard切换
  5. ASP.NET Core EFCore 之Code First
  6. spark sql的简单操作
  7. walle(瓦力)部署系统的安装和简单使用
  8. python学习笔记七
  9. snakebar 的使用
  10. 15.用PHP写出显示客户端IP与服务器IP的代码,如何防止用户使用代理的情况?[添加更多详情]...