SpringBoot 启动时自动执行代码的几种方式,还有谁不会??
Java之间
共 2495字,需浏览 5分钟
·
2022-06-06 18:52
往期热门文章:
来源:blog.csdn.net/u011291072/article/details/81813662
前言
java自身的启动时加载方式
Spring启动时加载方式
代码测试
总结
前言
@PostConstruct
注解实现。ApplicationRunner
与CommandLineRunner
接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。java自身的启动时加载方式
static代码块
构造方法
Spring启动时加载方式
@PostConstruct注解
ApplicationRunner和CommandLineRunner
CommandLineRunner
和ApplicationRunner
。ApplicationRunner
的run方法入参为ApplicationArguments
,为CommandLineRunner
的run方法入参为String数组。何为ApplicationArguments
Provides access to the arguments that were used to run a SpringApplication.
SpringApplication.run(…)
的应用参数。Order注解
CommandLineRunner
和ApplicationRunner
接口时,可以通过在类上添加@Order注解来设定运行顺序。代码测试
@Component
public class TestPostConstruct {
static {
System.out.println("static");
}
public TestPostConstruct() {
System.out.println("constructer");
}
@PostConstruct
public void init() {
System.out.println("PostConstruct");
}
}
@Component
@Order(1)
public class TestApplicationRunner implements ApplicationRunner{
@Override
public void run(ApplicationArguments applicationArguments) throws Exception {
System.out.println("order1:TestApplicationRunner");
}
}
@Component
@Order(2)
public class TestCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
System.out.println("order2:TestCommandLineRunner");
}
}
总结
@Component
注解的类,加载类并初始化对象进行自动注入。加载类时首先要执行static静态代码块中的代码,之后再初始化对象时会执行构造方法。@PostConstruct
注解的方法。当容器启动成功后,再根据@Order注解的顺序调用CommandLineRunner
和ApplicationRunner
接口类中的run方法。static
>constructer
>@PostConstruct
>CommandLineRunner
和ApplicationRunner
.
最近热文阅读:
1、如何写出让同事吐血的代码? 2、遭弃用的 Docker Desktop 放大招!宣布支持 Linux 3、IDEA公司再发新神器!超越 VS Code 骚操作! 4、推荐好用 Spring Boot 内置工具类 5、五个刁钻的String面试问题及解答 6、IntelliJ平台将完全停止使用Log4j 7、神操作!我把 3000 行代码重构成 15 行! 8、我用Java几分钟处理完30亿个数据... 9、一款自动生成单元测试的 IDEA 插件 10、微软 10 大最受欢迎 GitHub 项目,最高 Star 数量 13 万 关注公众号,你想要的Java都在这
评论