• 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的初始化工作。

  • 相关阅读:
    KMP
    KMP 算法详解
    快慢指针-链表环入口问题
    算法题——只出现一次的数字
    DECODE 与CASE WHEN 的比较
    Mybatis动态传入tableName--非预编译(STATEMENT)
    mysql数据库出现无法登录(ERROR 1045 ),预防和解决及系列问题解决方法。
    15.linux iptables防火墙规则vsftp服务
    14.LAMP服务 Linux Apache Mysql Php和防护机制 xinetd、tcp wapper
    13.mysql数据库
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9548151.html
Copyright © 2020-2023  润新知