有时候我们需要在spring boot容器启动并加载完后,开一些线程或者一些程序来干某些事情。这时候我们需要配置ContextRefreshedEvent事件来实现我们要做的事情

1、ApplicationStartup类

public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent>{
public void onApplicationEvent(ContextRefreshedEvent event)
{
//在容器加载完毕后获取dao层来操作数据库
OSSVideoRepository ossVideoRepository = (OSSVideoRepository)event.getApplicationContext().getBean(OSSVideoRepository.class);
//在容器加载完毕后获取配置文件中的配置
ServerConfig serverConfig = (ServerConfig)event.getApplicationContext().getBean(ServerConfig.class); ServerFileScanner fileScanner = new ServerFileScanner(
ossVideoRepository, serverConfig.getScanpath());
//在容器加载完毕后启动线程
Thread thread = new Thread(fileScanner);
thread.start();
}
}

2、ServerConfig 类

@Component
@ConfigurationProperties(prefix = "server")
public class ServerConfig {
private String aliyunossEndpoint;
private String aliyunossAccessKeyId;
private String aliyunossAccessKeySecret;
private String aliyunossBucketName;
private String scanpath; public String getAliyunossEndpoint() {
return aliyunossEndpoint;
} public void setAliyunossEndpoint(String aliyunossEndpoint) {
this.aliyunossEndpoint = aliyunossEndpoint;
} public String getAliyunossAccessKeyId() {
return aliyunossAccessKeyId;
} public void setAliyunossAccessKeyId(String aliyunossAccessKeyId) {
this.aliyunossAccessKeyId = aliyunossAccessKeyId;
} public String getAliyunossAccessKeySecret() {
return aliyunossAccessKeySecret;
} public void setAliyunossAccessKeySecret(String aliyunossAccessKeySecret) {
this.aliyunossAccessKeySecret = aliyunossAccessKeySecret;
} public String getAliyunossBucketName() {
return aliyunossBucketName;
} public void setAliyunossBucketName(String aliyunossBucketName) {
this.aliyunossBucketName = aliyunossBucketName;
} public String getScanpath() {
return scanpath;
} public void setScanpath(String scanpath) {
this.scanpath = scanpath;
} }

PS:还有一些spring内置的事件

1、 ContextRefreshedEvent:ApplicationContext容器初始化或者刷新时触发该事件。
2、 ContextStartedEvent:当使用ConfigurableApplicationContext接口的start()方法启动ApplicationContext容器时触发该事件。
3、 ContextClosedEvent:当使用ConfigurableApplicationContext接口的close()方法关闭ApplicationContext容器时触发该事件。
4、 ContextStopedEvent: 当使用ConfigurableApplicationContext接口的stop()方法停止ApplicationContext容器时触发该事件。


作者:献给记性不好的自己
链接:http://www.jianshu.com/p/01f7a971a4b9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

spring boot容器加载完后执行特定操作的更多相关文章

  1. spring启动容器加载成功后执行调用方法

    需求: 由于在微服务架构中各服务之间都是通过接口调用来进行交互的,像很多的基础服务,类似字典信息其实并不需每次需要的时候再去请求接口.所以我的想法是每次启动项目的时候,容器初始化完成,就去调用一下基础 ...

  2. js页面加载完后执行(document.onreadystatechange 和 document.readyState)

    js页面加载完后执行javascript(document.onreadystatechange 和 document.readyState) document.onreadystatechange ...

  3. spring 容器加载完成后执行某个方法

    理论 刚好再开发过程中遇到了要在项目启动后自动开启某个服务,由于使用了spring,我在使用了spring的listener,它有onApplicationEvent()方法,在Spring容器将所有 ...

  4. 图片加载完后执行js

    <script>            window.onload=function(){                          var liwidth = $('.imgul ...

  5. ExtJS 等待两个/多个store加载完再执行操作的方法

    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架. Extjs加载Store是异步加载的,这有很多好处.但是当我们要在两个或多个不同的store加载完再执行一些操作 ...

  6. 在Spring Boot中加载初始化数据

    文章目录 依赖条件 data.sql文件 schema.sql 文件 @sql注解 @SqlConfig 注解 在Spring Boot中加载初始化数据 在Spring Boot中,Spring Bo ...

  7. js中页面加载完成后执行的几种方式及执行顺序

    1:使用jQuery的$(function){}; 2:使用jquery的$(document).ready(function(){});前两者本质上没有区别,第1种是第2种的简写方式.两个是docu ...

  8. spring boot启动加载项CommandLineRunner

    spring boot启动加载项CommandLineRunner 在使用SpringBoot构建项目时,我们通常有一些预先数据的加载.那么SpringBoot提供了一个简单的方式来实现–Comman ...

  9. window.onload在文档加载完成后执行

    验证a .b两点疑惑: a.<script src="./main.js"></script>中的window.onload是在html全部加载完了才执行, ...

随机推荐

  1. Groovy中的操作符重载

    操作者 方法 a + b a.plus(b)中 a - b a.minus(b)中 a * b a.multiply(b)中 a ** b a.power(b)中 a / b a.div(b)中 a ...

  2. WinForm实现Rabbitmq官网6个案例-Hello World

    先上代码 namespace RabbitMQDemo { public partial class HelloWorld : Form { string queueName1 = "hel ...

  3. 使用SVG中的Symbol元素制作Icon【摘转】

    以下为内容摘抄和转摘记录: 为什么要用svg ? SVG优势 随着高清屏幕的普及,相比使用png等位图而言,使用SVG等矢量图形是一种全新的设计方式.更重要的是相比位图而言,SVG有着无可比拟的优势. ...

  4. GDAL2.0编译——32位和64位

    准备工作: Source下载,这里下载对应的GDAL版本 https://trac.osgeo.org/gdal/wiki/DownloadSource 懒得编译也可以在这里下载对应版本 https: ...

  5. 一张图看懂 JS 原型链

    JS 原型链,画了张图,终于理清楚各种关系有木有 写在最后: __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! function Person() { } 是函 ...

  6. 自学git心得-5

    标签管理也是git里面比较重要的一部分内容,我们下载软件的时候经常看到诸如v2.0.v2.3.0这样的版本号,在git里也是一样,有时为了避免分支的名称五花八门而发生混淆的情况,我们常常会 给分支贴上 ...

  7. String类型的学习

    一 :关于两个string类型变量是否相等: 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 分析: 首先为s0开辟空间,然后给s1开辟 ...

  8. visual studio code 插入当前时间插件 -- Insert Time Stamp

    使用方法:ctrl + f5 效果:

  9. byr面经两则

    人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Offer及笔经面经 ),这篇文章对我帮助很大. 我写这篇文章一是为了感 ...

  10. 转 string和byte[]的转换 (C#)

    转 string和byte[]的转换 (C#)  string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ...