这两个接口均需要实现一个run方法(参数不同),实在spring 启动类执行之后第一个执行的类,可以用来初始化一些预置条件之类的。
使用限制:
1.需要实现上述的任意一个接口
2.该接口的实现类实在运行期间继启动类执行后第一个执行的类,但在启动过程中(编译构建阶段)优先级并不高(具体不详)。
例如:
实现了上述接口的类的run方法获取了配置文件中的字段a,
但 有这么一个bean 用到了a变量,就会抛异常
@Bean
public User getU(){
if (a==null){
throw MyExceptionxxxxx
}
}
获取不到。debug时会发现,先走的@Bean的创建,而不是上述的实现类,因此上述的实现类只会在运行期间初始化。