java加载顺序
作用场景:在项目启动时提前将部分数据加载到spring容器中。
解决方案:
1. 定义静态方法;在类加载时执行。
@Component
@Order(1)
public class RunnerLoadOne implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
ClassDo classDo = SpringContextUtil.getBean(ClassDo.class);
classDo.setClassName("Java");
System.out.println("------------容器初始化bean之后,加载资源结束-----------");
}
}
@Component
@Order(2)
public class RunnerLoadTwo implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
ClassDo bean = SpringContextUtil.getBean(ClassDo.class);
System.out.println("依赖预先加载的资源数据:" + bean.getClassName());
}
}
结果:
------------容器初始化bean之后,加载资源结束-----------
依赖预先加载的资源数据:Java
3. @PostConstruct ;在具体bean的实例化时执行。
加载顺序: Constructor(构造器) > @Autowired > @PostConstruct > 静态方法
4. 实现 InitializingBean接口;重写 afterPropertiesSet()方法
附录一:@Order(n)

浙公网安备 33010602011771号