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


    有时候我们需要在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
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面
    看不懂 ASP.NET 相册上传代码
    asp.net判断是1.1还是2.0主要由Code*属性来解决,判断规则如下:
    引号看不懂
    GridView的行删除事件 //取当前行的Id
    <Columns></Columns>中间的是列集合
    DropDownList1.SelectedIndex = 0 DropDownList1处于位选择任何选项的状态下
    是一个查询语句 查询ZhuanJia表里面id=输入id的数据
    验证码图片的解释
    get和post区别:
  • 原文地址:https://www.cnblogs.com/exmyth/p/7752032.html
Copyright © 2020-2023  润新知