CommandLineRunner 与@PostConstruct

@PostConstruct

不是spring提供的而是Java自己的注解。

Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct注释用于需要依赖注入完成后才能执行任何初始化的方法上。 在类投入使用之前,必须调用此方法

在使用spring框架时,在一个类内,如果有构造器(Constructor ),有@PostConstruct,还有@Autowired,他们的先后执行顺序为Constructor >> @Autowired >> @PostConstruct。在类加载的时候,为当前类初始化一些数据,那么可以使用@PostConstruct注解

CommandLineRunner

spring boot可以通过CommandLineRunner接口实现启动加载功能,实现CommandLineRunner接口,然后重写run方法,在run方法内编写需要加载的内容。CommandLineRunner会在服务启动之后被立即执行。
CommandLineRunner可以有多个,且多个直接可以用order注解进行排序。

比较

@PostConstruct更针对性于当前类文件,而CommandLineRunner更服务于整个项目。所以在我们使用中,可根据自己的使用场景来进行选择用这两种方式来实现初始化。

posted @ 2021-05-12 09:17  刘66  阅读(971)  评论(0编辑  收藏  举报