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

  • 相关阅读:
    第八周上机
    第七周作业
    第七周上机练习
    第六周作业
    第六次上机
    第五次上机
    第四周作业
    第四周上机练习
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9548151.html
Copyright © 2020-2023  润新知