- 
背景
最近项目中有地方要用到bean的初始化,就顺便研究了一下几种初始化的区别
- 
对比方式
- 
@PostConstruct
- 
org.victor.spring.bean.factory.DefaultUserFactory#afterPropertiesSet
- 
@Bean(initMethod = "initUserFactory")
- 
相关代码
public class DefaultUserFactory implements UserFactory , InitializingBean {
    @PostConstruct
    public void init(){
        System.out.println("PostConstruct:DefaultUserFactory 初始化");
    }
    public void initUserFactory(){
        System.out.println("自定义:DefaultUserFactory 初始化");
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean#afterPropertiesSet: DefaultUserFactory 初始化");
    }
}
复制代码@Configuration
public class BeanInitizlizationDemo {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext =new AnnotationConfigApplicationContext();
        //注册Configuration 配置类
        applicationContext.register(BeanInitizlizationDemo.class);
        //启动spring 应用上下文
        applicationContext.refresh();
        // 非延迟初始化在 spring 应用上下文启动完成后,被初始化
        System.out.println("spring 应用上下文已启动");
        //依赖查找
        UserFactory userFactory = applicationContext.getBean(UserFactory.class);
        System.out.println(userFactory);
        //关闭spring应用上下文
        System.out.println("spring 应用上下文准备关闭.....");
        //说明spring 中bean的销毁是在close 方法中进行的
        applicationContext.close();
        System.out.println("spring 应用上下文已经关闭");
    }
    @Bean(initMethod = "initUserFactory")
    public UserFactory userFactory(){
        return new DefaultUserFactory();
    }
}
复制代码执行效果:

- 
结果
@PostConstruct > InitializingBean > initMethod
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
