Spring Bean初始化及@Bean销毁
- @PostConstruct
 
- @Bean(initMethod = “X”)
 
- @InitilizingBean#afterPropertiesSet
 
@PostConstruct
1 2 3 4
   | @PostConstruct public void init(){   System.out.println("PostConstruct init......."); }
   | 
 
@Bean(initMethod = “X”)
1 2 3 4 5 6 7 8
   | 
 
 
  @Bean(name = "orderBean",initMethod = "init",destroyMethod = "destroy") public static  OrderAllServiceImpl orderBeanFactory(){   return new OrderAllServiceImpl(); }
 
  | 
 
- 销毁方式-1:在 OrderAllServiceImpl 实现类中写 init 方法和 destroy 方法
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | public class OrderAllServiceImpl implements  OrderAllService{   public void init(){     log.info("bean init start...");   }
    @Override   public List<Product> getProductList(String orderCode) {          return new ArrayList<>();   }
    public void destroy(){     log.info("bean destory...");   }}
  | 
 
- 销毁方式-2:使用方法注解 @PostConstruct @PreDestroy
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | public class OrderAllServiceImpl implements OrderAllService {     @PostConstruct     public void init(){         System.out.println("bean init");     }     @Override     public List<Product> getProductNameByOrderCode(String code) {                  return new ArrayList<>();     }     @PreDestroy     public void destroy(){         System.out.println("bean desory");     } }
  | 
 
@InitilizingBean#afterPropertiesSet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   | @Component public class OrderProcessors implements InitializingBean {
    @Autowired   private ApplicationContext applicationContext;
    private static OrderAllService OrderAllService;
    private static final List<OrderProcessor> PROCESSOR_LIST = new ArrayList<>();
    @Autowired   public void setOrderAllService(OrderAllService OrderAllService) {     OrderProcessors.OrderAllService = OrderAllService;   }
    @Override   public void afterPropertiesSet() throws Exception {     log.info("init processors");          PROCESSOR_LIST.add(applicationContext.getBean(FirstProcessor.class));     PROCESSOR_LIST.add(applicationContext.getBean(SecondProcessor.class));
    }}
   | 
 
初始化顺序
- 1.@PostConstruct
 
- 2.@InitializingBean#afterPropertiesSet
 
- 3.@Bean(initMethod=”X”)
 
@Bean初始化与销毁方法和 bean 中方法执行的顺序
- 类的构造函数执行 —》自定义初始化方法执行 —》自定义 destroy 方法 —》 bean 销毁。
 
来源:
https://github.com/mifunc/Spring-BeanInitialization