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包依賴