欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解spring boot容器加载完后执行特定操作

程序员文章站 2023-11-29 09:03:52
有时候我们需要在spring boot容器启动并加载完后,开一些线程或者一些程序来干某些事情。这时候我们需要配置contextrefreshedevent事件来实现我们要做...

有时候我们需要在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容器时触发该事件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。