当前开发的Springboot项目在开始时需要预加载。在启动过程中或开始成功之后,有许多方法可以选择如何实现代码的执行。我们可以在静态代码块中实现它,也可以在构造函数中实现,也可以通过@PostConstruct注释实现。
当然,您还可以实现Spring的ApplicationRunner和CommandLinerunner接口来实现启动后运行的功能。将其在这些位置中的差异和加载序列进行处理。
静态代码块
加载类时,静态静态代码块将自动执行。
施工方法
在对象的初始化过程中执行。执行顺序是在静态静态代码块之后。
@postConstruct Note
邮政结构注释用于方法中,并且在对象依赖项被注入初始化之后,将执行此方法。
ApplicationRunner和CommandLineerunner
SpringBoot提供了两个接口,以在启动后实现弹簧容器的功能。这两个接口是CommandLineerunner和ApplicationRunner。
这两个接口需要实现运行方法以在运行中实现代码。这些接口函数基本上是相同的,而区别在于运行方法的注册。ApplicationRunner的运行方法是作为应用程序ASPARPENTARGUMENTS,并且运行方法的运行方法的运行方法CommandLinerunner的运行方法是字符串数组中的段落。
什么是应用程序
官方文件解释是:
提供对用于运行弹簧的参数的访问权限。
访问应用程序参数在Spring应用程序期间使用。也就是说,我们可以获取SpringApplication.run(…)的应用程序参数。
订单注释
当多个类实现CommandLineerner和ApplicationRunner接口时,可以通过向类添加@Order注释来设置运行顺序。
为了测试启动过程中运行的效果和顺序,请编写一些测试代码以查看。
TestPostConstruct
TestApplicationRunner
TestCommandLineernerner
结果
编辑
切换到中心
添加图片注释,不超过140个字(可选)
在Spring应用程序的启动过程中,绝对有必要使用@Component注释,加载类和初始化的对象自动注入。加载类时,您必须首先在静态静态代码块中执行代码,然后在初始化对象时执行结构方法。
注入对象后,调用@postConsstruct注释方法。完成容器后,按 @order注释的顺序启动了CommandLinernerner和ApplicationRunner Interface类。
因此,加载顺序为静态>构造函数> @postConstruct> commandlinerunner和ApplicationRunner。
PS:防止本文无法找到本文。
原始:https://juejin.cn/post/709646464075115726
