文章目录

  • SpringMVC
  • SpringBoot
  • 参考

SpringMVC

实现ApplicationListener接口,并实现 onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent)方法

@Service
public class SearchReceive implements  ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次//需要执行的方法}}
}

至于为什么先做判断,因为Spring存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理。

SpringBoot

业务场景:
应用服务启动时,加载一些数据和执行一些应用的初始化动作。如:删除临时文件,清除缓存信息,读取配置文件信息,数据库连接等。
SpringBoot提供了CommandLineRunner和ApplicationRunner接口。当接口有多个实现类时,提供了@order注解实现自定义执行顺序,也可以实现Ordered接口来自定义顺序。

注意:数字越小,优先级越高,也就是@Order(1)注解的类会在@Order(2)注解的类之前执行。

两者的区别在于:
ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获命令行参数,那就使用ApplicationRunner接口

  • ApplicationRunner
@Component
@Order(value = 10)
public class AgentApplicationRun2 implements ApplicationRunner {@Overridepublic void run(ApplicationArguments applicationArguments) throws Exception {}
}
  • CommandLineRunner
@Component
@Order(value = 11)
public class AgentApplicationRun implements CommandLineRunner {@Overridepublic void run(String... strings) throws Exception {}
}

还有一种方法也可以实现,就是使用@PostConstruct注解,详见:https://www.jianshu.com/p/98cf7d8b9ec3

参考

  • SpringBoot Runner 与 @PostConstruct 初始化数据
  • @PostConstruct

Spring项目启动完成后,自动执行一次指定方法相关推荐

  1. idea创建web项目运行报404错误_IDEA JavaWeb项目启动运行后出现404错误的解决方法...

    404这个错误真的是一言难尽!不过大多是配置文件出错,认真修改还是可以的 1.web.xml配置错误: 默认首页没有写的,在web.xml添加一个就行(前提是你有jsp页面,名字不要写错): 比如这个 ...

  2. 介绍Spring Boot 启动时,自动执行指定方法的 7 种方法

    目录 前言 实现方式 1.实现ServletContextListener接口contextInitialized方法 2.静态代码块方式 3.@PostConstruct注解方式 4. 实现Serv ...

  3. Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法

    本文出处:http://blog.csdn.net/chaijunkun/article/details/8647281,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  4. Vue 项目运行完成后自动打开浏览器【多种方法】

    方法一:package.json(适用于vue3) 在文件中找到scripts–serve,在后面添加 --open 方法二:vue.config.js 该方法适用于 有vue.config.js的项 ...

  5. spring启动后自动执行一次方法

    说明 spring启动后自动执行一次方法:因为需要保证所有调度相关的依赖注入spring容器才创建所以定时调度任务,所以需要实现在Spring容器将所有的Bean都初始化完成之后才自动执行一次执行方法 ...

  6. Spring Boot 启动时,让方法自动执行的 4 种方法!

    点击关注公众号,Java干货及时送达 作者:FOEVERYANG 来源:www.cnblogs.com/lsgspace/p/10508180.html 在springBoot中我们有时候需要让项目在 ...

  7. SpringBoot启动时实现自动执行代码的几种方式讲解

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u011291072/article/ details/81813662 前言 目前开发的SpringBoot项目在启动的时候需 ...

  8. JS,两种在页面加载完成后自动执行的方法(ready,onload)

    JS,两种在页面加载完成后自动执行的方法 1.jQuery的ready事件,需要引入jQuery的包才能使用,表示文档结构已经加载完成(不包含图片等非文字媒体文件): ready可以多次调用,可以绑定 ...

  9. Java程序初始化启动自动执行的三种方法

    目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...

最新文章

  1. 你花了多久弄明白架构设计?kafka日志清理
  2. python中文叫什么意思-python中文叫什么
  3. winhex使用经验
  4. 阿里百川与极客邦科技达成战略合作 Weex宣布开源
  5. freebsd原理与设计精要(1)-freebsd与unix简介
  6. 浏览器缓存机制的研究分享
  7. 带你利用一句话完成转场动画
  8. 关于 ASP.NET MVC 中的视图生成
  9. Android 实现锚点定位
  10. 如何理解SVM | 支持向量机之我见
  11. CSS之实现二级菜单动态出现
  12. CSS中Position定位属性的使用
  13. mybatis update返回值的意义
  14. GroupBy()方法
  15. 用计算机用语说唯美的话,好听唯美的说说句子
  16. GIS软件——arcgis10.2制作符号并链接符号库
  17. RazorSQL Mac(SQL数据库查询工具)含激活码
  18. Istio 中的智能 DNS 代理功能
  19. QQVideo 开始公测
  20. 访达前往文件夹_(苹果电脑excle没有查找全部)苹果笔记本有没有自带excel

热门文章

  1. 【考研精品词】历年英语真题词汇精析
  2. 大一计算机选课建议,大学选修课-关于大学选修课有没有热心的学姐学长给我们大一新生一些建议,第一次 爱问知识人...
  3. 马来西亚:央行与证监会联合实施数字货币与ICO监管
  4. 火狐标签在中间_在Firefox中轻松组织和分组标签
  5. win7计算机广告更改,win7系统屏蔽营销广告的设置办法
  6. python读取excel某列数据
  7. [微信小程序] 微信小程+ts中 箭头函数和this的问题
  8. C语言进阶--万字讲解带你学会字符串函数
  9. P1862 输油管道问题
  10. 第一章 初识Java总结