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

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

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

 /**
* @author :CX
* @Date :Create in 2018/8/31 11:39
* @Effect : 监听项目启动成功后, 每次启动给启动序列码+1(tb_sb_idcounter表) ,
* 并吧最新的序列码写入redis
*/
@Component
@Order(10) //执行的优先级
public class StartIdListener implements ApplicationRunner {
Logger logger = Logger.getLogger(this.getClass().getName());
//注入针对数据库的dao
@Autowired
@Qualifier("dao")
protected IDao dao;
//注入针对redis的dao
@Autowired
RedisUtil redisUtil ; // 系统启动序列码在redis中保存的key
private String SYSTEM_NUMBER = "bigcustomer:systemNumber_fh23" ;
// 本次啓動 , 通用id 执行到几了, 继续执行
private String FUNIQUEID_NUMBER = "bigcustomer:funiqueid_number" ;
/**
*@参数
*@返回值
*@创建人 cx
*@创建时间
*@描述 zaispringboot启动后执行
*/
@Override
public void run(ApplicationArguments args) throws Exception {
//数据库启动序列码 +1
logger.info("项目启动成功, 开始获取启动码!");
try{
dao.update("util-baseIdUpOne");
}catch (Exception e){
throw new RuntimeException("启动失败,启动序列码执行+1 操作时异常!请检查 tb_sb_idcounter表");
}
// 获取最新数据
TbSbIdcounterModel first = dao.entity(TbSbIdcounterModel.class).first();
if(null == first || null == first.getFH23()){
throw new RuntimeException("启动失败,启动序列码为空,请检查 tb_sb_idcounter表");
}
Long fh23 = first.getFH23();
// 保存启动序列码到redis
redisUtil.set(SYSTEM_NUMBER,fh23);
// 初始化本次 轮训的编码
redisUtil.set(FUNIQUEID_NUMBER,1); logger.info("获取启动码成功, 本次系统启动码为:" + fh23);
}
}

springboot2.X 在项目启动后执行一段自定义代码的更多相关文章

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

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

  2. springboot启动后执行一段代码的方式

    文章转载自: https://www.cnblogs.com/zuidongfeng/p/9926471.html https://blog.csdn.net/zknxx/article/detail ...

  3. springboot 学习之路 9 (项目启动后就执行特定方法)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

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

    springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...

  5. Spring Boot项目指定启动后执行的操作

    Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...

  6. 在web项目启动时执行某个方法

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...

  7. 【Spring容器】项目启动后初始化数据的两种实践方案

    早期业务紧急,没有过多的在意项目的运行效率,现在回过头看走查代码,发现后端项目(Spring MVC+MyBatis)在启动过程中多次解析mybatis的xml配置文件及初始化数据,对开发阶段开发人员 ...

  8. spring boot 配置启动后执行sql, 中文乱码

    spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: u ...

  9. spring项目启动后,获取bean的方法总结

    如果在web项目中,用到定时器的朋友可能会遇到使用spring注解的方式获取bean的时候报空指针的异常.这是就可以使用手工的方法获取spring容器中的bean了. 下面是具体的方法: 1.先说一个 ...

随机推荐

  1. jsonrpc.js -- 原生js实现 JSON-RPC 协议

    很早以前就涉及到多端远程调用 api的设计,那时候自己设计了个消息传递回调过程.最近了解了JSON-RPC协议,更正规,就可以自己实现下.逻辑也不复杂,没有限制底层消息传递的方式,可以应用到更多的场景 ...

  2. Spark(十六)DataSet

    Spark最吸引开发者的就是简单易用.跨语言(Scala, Java, Python, and R)的API. 本文主要讲解Apache Spark 2.0中RDD,DataFrame和Dataset ...

  3. 【LOJ】#2038. 「SHOI2015」超能粒子炮・改

    题解 用lucas随便分析一波就出来了 \(\binom{n}{k} = \binom{n % p}{k % p}\binom{n / p}{k / p}\) 那么对于一个余数r,如果r <= ...

  4. 跟我一起学WPF(2):WPF控件基础

    WPF控件简介 通过上一篇XAML语言的介绍,我们知道,XAML是一个树形结构,同样,WPF控件作为构成整个XAML树的一部分,也是一个树形结构.我们看一个简单的例子. <Button.Cont ...

  5. python根据字典自动生成一组省和市名

    字典如下: dict={ '河北省':['石家庄','唐山','秦皇岛','承德'], '山东省':['济南','青岛','临沂','淄博'], '湖南省':['长沙','衡阳','湘潭','邵阳', ...

  6. LoadRunner测试ajax框架,回放后系统中没有产生数据解决方法

    1.QTP11 下载地址:http://www.genilogix.com/downloads/unified-functional-testing/quicktest-professional-11 ...

  7. 收集Nginx的json格式日志(五)

    一.配置nginx [root@linux-node1 ~]# vim /etc/nginx/nginx.conf #修改日志格式为json格式,并创建一个nginxweb的网站目录 log_form ...

  8. UIView中常见的方法汇总

    addSubview: 添加一个子视图到接收者并让它在最上面显示出来. - (void)addSubview:(UIView *)view  总结:这个方法同样设置了接收者为下一个视图响应对象.接收者 ...

  9. golang make()的第三个参数

    golang分配内存有一个make函数,该函数第一个参数是类型,第二个参数是分配的空间,第三个参数是预留分配空间,前两个参数都很好理解, 对于第三个参数,例如a:=make([]int, 5, 10) ...

  10. Jenkins 使用 maven 出现C:\Windows\system32\config\systemprofile的解决

    jenkins 使用 maven 出现 C:\Windows\system32\config\systemprofile 的原因是 Jenkins 服务启动的账号使用了系统的账号,在服务里改成具体的桌 ...