Spring项目启动完成后,自动执行一次指定方法
文章目录
- 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项目启动完成后,自动执行一次指定方法相关推荐
- idea创建web项目运行报404错误_IDEA JavaWeb项目启动运行后出现404错误的解决方法...
404这个错误真的是一言难尽!不过大多是配置文件出错,认真修改还是可以的 1.web.xml配置错误: 默认首页没有写的,在web.xml添加一个就行(前提是你有jsp页面,名字不要写错): 比如这个 ...
- 介绍Spring Boot 启动时,自动执行指定方法的 7 种方法
目录 前言 实现方式 1.实现ServletContextListener接口contextInitialized方法 2.静态代码块方式 3.@PostConstruct注解方式 4. 实现Serv ...
- Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法
本文出处:http://blog.csdn.net/chaijunkun/article/details/8647281,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...
- Vue 项目运行完成后自动打开浏览器【多种方法】
方法一:package.json(适用于vue3) 在文件中找到scripts–serve,在后面添加 --open 方法二:vue.config.js 该方法适用于 有vue.config.js的项 ...
- spring启动后自动执行一次方法
说明 spring启动后自动执行一次方法:因为需要保证所有调度相关的依赖注入spring容器才创建所以定时调度任务,所以需要实现在Spring容器将所有的Bean都初始化完成之后才自动执行一次执行方法 ...
- Spring Boot 启动时,让方法自动执行的 4 种方法!
点击关注公众号,Java干货及时送达 作者:FOEVERYANG 来源:www.cnblogs.com/lsgspace/p/10508180.html 在springBoot中我们有时候需要让项目在 ...
- SpringBoot启动时实现自动执行代码的几种方式讲解
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u011291072/article/ details/81813662 前言 目前开发的SpringBoot项目在启动的时候需 ...
- JS,两种在页面加载完成后自动执行的方法(ready,onload)
JS,两种在页面加载完成后自动执行的方法 1.jQuery的ready事件,需要引入jQuery的包才能使用,表示文档结构已经加载完成(不包含图片等非文字媒体文件): ready可以多次调用,可以绑定 ...
- Java程序初始化启动自动执行的三种方法
目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...
最新文章
- 你花了多久弄明白架构设计?kafka日志清理
- python中文叫什么意思-python中文叫什么
- winhex使用经验
- 阿里百川与极客邦科技达成战略合作 Weex宣布开源
- freebsd原理与设计精要(1)-freebsd与unix简介
- 浏览器缓存机制的研究分享
- 带你利用一句话完成转场动画
- 关于 ASP.NET MVC 中的视图生成
- Android 实现锚点定位
- 如何理解SVM | 支持向量机之我见
- CSS之实现二级菜单动态出现
- CSS中Position定位属性的使用
- mybatis update返回值的意义
- GroupBy()方法
- 用计算机用语说唯美的话,好听唯美的说说句子
- GIS软件——arcgis10.2制作符号并链接符号库
- RazorSQL Mac(SQL数据库查询工具)含激活码
- Istio 中的智能 DNS 代理功能
- QQVideo 开始公测
- 访达前往文件夹_(苹果电脑excle没有查找全部)苹果笔记本有没有自带excel
热门文章
- 【考研精品词】历年英语真题词汇精析
- 大一计算机选课建议,大学选修课-关于大学选修课有没有热心的学姐学长给我们大一新生一些建议,第一次 爱问知识人...
- 马来西亚:央行与证监会联合实施数字货币与ICO监管
- 火狐标签在中间_在Firefox中轻松组织和分组标签
- win7计算机广告更改,win7系统屏蔽营销广告的设置办法
- python读取excel某列数据
- [微信小程序] 微信小程+ts中 箭头函数和this的问题
- C语言进阶--万字讲解带你学会字符串函数
- P1862 输油管道问题
- 第一章 初识Java总结