1. 实现InitializingBean接口 重写afterPropertiesSet()方法
2. @Configuration @Bean
3. 实现ApplicationContextAware接口 重写setApplicationContext(ApplicationContext applicationContext)方法
4.@PostConstruct 在构造函数之后执行
5.@Import导入类
public class User{}
@Import({User.class})
public class App {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
System.out.println(context.getBean(User.class));
context.close();
}
}
springboot 的多个@Configuration注解的配置类如何控制加载顺序?
//责任链模式
1.可以通过@Order来指明优先级,Order值越小,优先级越高
2.如果配置之间有依赖关系,可以通过@ConditionalOnBean来指定依赖关系
https://www.iteye.com/blog/wiselyman-2217192
@Configuration @AutoConfigureBefore(ElasticLogger.class) public class EsConfig { //在ElasticLogger之前加载EsConfig @Configuration @AutoConfigureAfter(ElasticLogger.class) public class EsConfig { //在ElasticLogger之后加载EsConfig
spring bean的初始化执行顺序:
1.spring bean的初始化执行顺序:构造方法 --> @PostConstruct注解的方法 --> afterPropertiesSet方法 --> init-method指定的方法。具体可以参考例子
2.afterPropertiesSet通过接口实现方式调用(效率上高一点),@PostConstruct和init-method都是通过反射机制调用
spring包依赖