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

原文地址:https://www.cnblogs.com/firestar277/p/14506647.html