我们在业务当中常常会遇到需要在项目启动时初始化数据的场景,CommandLineRunner和@PostConstruct是两种初始化的方式,下面我讲一下他们两个的区别和使用方法。
CommandLineRunner是Spring Boot提供的一个接口,实现该接口的类可以在Spring Boot启动完成后立即执行一些自定义的初始化操作。@PostConstruct注解是Java标准注解,用于指定在构造方法之后、依赖注入完成之后执行的方法,也可以用于初始化操作。
区别在于:
-
CommandLineRunner是Spring Boot提供的专门用于初始化操作的接口,而@PostConstruct是Java标准注解,不仅仅用于初始化操作。
-
CommandLineRunner接口只有一个run方法,用于执行初始化操作。@PostConstruct注解可以用在任何方法上,只要该方法在构造方法之后、依赖注入完成之后被调用即可。
-
CommandLineRunner接口是Spring Boot提供的特殊功能,使用该接口可以方便地在Spring Boot启动完成后执行自定义的初始化操作。而@PostConstruct注解则是标准的Java注解,可以在任何Java应用中使用。
使用方法
CommandLineRunner:
实现CommandLineRunner接口,将其注入到bean容器中,并把初始化的代码写入到重写的方法中,即可实现初始化方法。
@PostConstruct:
在任意的方法上添加@PostConstruct注解即可实现初始化方法。