-
背景
最近项目中有地方要用到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)