spring 系统启动加载的类


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM