Spring初始化的几种方式

  1. 实现InitializingBean
  2. 实现ApplicationContextInitializer

实现InitializingBean

实现该接口 在bean被加载时调用 afterPropertiesSet()方法

public interface InitializingBean {

	/**
	 * Invoked by the containing {@code BeanFactory} after it has set all bean properties
	 * and satisfied {@link BeanFactoryAware}, {@code ApplicationContextAware} etc.
	 * <p>This method allows the bean instance to perform validation of its overall
	 * configuration and final initialization when all bean properties have been set.
	 * @throws Exception in the event of misconfiguration (such as failure to set an
	 * essential property) or if initialization fails for any other reason
	 */
	void afterPropertiesSet() throws Exception;

}

实现ApplicationContextInitializer

public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> {

	/**
	 * Initialize the given application context.
	 * @param applicationContext the application to configure
	 */
	void initialize(C applicationContext);

}

配合springboot极易使用

public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(APP.class);
        springApplication.addInitializers(多个ApplicationContextInitializer的实现 可通过@order排序);
        springApplication.run(args);
    }

public void addInitializers(ApplicationContextInitializer<?>... initializers) {
		this.initializers.addAll(Arrays.asList(initializers));
	}