zoukankan      html  css  js  c++  java
  • Spring Boot中初始化资源的几种方式

    CommandLineRunner

    • 定义初始化类 MyCommandLineRunner
    • 实现 CommandLineRunner接口,并实现它的 run()方法,在该方法中编写初始化逻辑
    • 注册成Bean,添加 @Component注解即可
    • 示例代码如下:
    @Component
    public class MyCommandLineRunner implements CommandLineRunner {
    
        @Override
        public void run(String... args) throws Exception {
            System.out.println("...init resources by implements CommandLineRunner");
        }
        
    }
    

      实现了 CommandLineRunner 接口的 Component 会在所有 Spring Beans 初始化完成之后在 SpringApplication.run() 执行之前完成。下面通过加两行打印来验证我们的测试。




    ApplicationRunner

    • 定义初始化类 MyApplicationRunner
    • 实现 ApplicationRunner接口,并实现它的 run()方法,在该方法中编写初始化逻辑
    • 注册成Bean,添加 @Component注解即可
    • 示例代码如下:
    @Component
    public class MyApplicationRunner implements ApplicationRunner {
    
        @Override
        public void run(ApplicationArguments applicationArguments) throws Exception {
            System.out.println("...init resources by implements ApplicationRunner");
        }
    
    }
    

      可以看到,通过实现 ApplicationRunner 接口,和通过实现 CommandLineRunner 接口都可以完成项目的初始化操作,实现相同的效果。两者之间唯一的区别是 run()方法中自带的形参不相同,在 CommandLineRunner 中只是简单的String... args形参,而 ApplicationRunner 则是包含了 ApplicationArguments 对象,可以帮助获得更丰富的项目信息。




    @PostConstruct 

    使用 @PostConstruct 注解同样可以帮助我们完成资源的初始化操作,前提是这些初始化操作不需要依赖于其它Spring beans的初始化工作。

  • 相关阅读:
    [USACO17FEB]Why Did the Cow Cross the Road III S
    [POI2015]PIE
    GSS3
    Bzoj3203: [Sdoi2013]保护出题人 凸包 + 三分
    斜率优化
    fread优化读入
    [USACO09JAN]安全出行Safe Travel 最短路,并查集
    zookeeper单机模式实现分布式,开发部署测试模式机器有限情况
    解决 jmeter An error occurred: Error while processing samples:Mismatch
    python 垃圾回收解析
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9548151.html
Copyright © 2011-2022 走看看