首頁  >  文章  >  Java  >  spring生命週期詳解

spring生命週期詳解

coldplay.xixi
coldplay.xixi原創
2020-06-23 14:40:596357瀏覽

spring生命週期詳解

spring生命週期詳解:

1. @Bean初始化與銷毀

1.1 bean的生命週期:

  bean創建-----初始化-----銷毀的過程

1.2  容器管理bean的生命週期:

  我們可以自訂初始化和銷毀方法:容器在bean進行到當前生命週期的時候來呼叫我們自訂的初始化和銷毀方法。

 建構子:
  單一實例:容器建立時進行初始化
  多重實例:每次取得的時候建立物件

       BeanPostProcessor.postProcessBeforeInitialization ##初始化:
  物件建立完成,並賦值好,呼叫初始化方法。
BeanPostProcessor.postProcessAfterInitialization銷毀:
  單一實例:容器關閉的時候
  多實例:容器不會管理這個bean;容器不會呼叫銷毀方法;
1、指定初始化和銷毀方法
  透過@Bean指定init-method和destroy-method;
2、透過Bean實作InitializingBean(定義初始化邏輯)
  DisposableBean(定義銷毀邏輯)
3、可以使用JSR250規格:
  @PostConstruct:在bean建立完成並且屬性賦值完成
  @PreDestroy:在容器銷毀bean銷毀之前呼叫清理工作

程式碼如下:

##a. initMethod 和destroyMethod 的使用
MainConfig.java

@Configuration@ComponentScan("com.zero.life")public class MainConfig 
{//    @Scope("prototype")    @Bean(initMethod = "init",destroyMethod = "destroy")    
public  Phone phone(){        
return new Phone();    }}
Phone.java
public class Phone {    public Phone() {        
System.out.println("Phone初始化构造。。。");    }  
  public void init(){        
  System.out.println("Phone 初始化方法。。。。");    }    
  public void destroy(){       
   System.out.println("Phone 销毁方法。。。");    }}

#b. InitializingBean和DisposableBean 的使用

@Componentpublic class Android implements InitializingBean,DisposableBean {
    public Android() {
        System.out.println("android constructor.......");
    }
    @Override
    public void destroy() throws Exception {
        System.out.println("android destroy........");
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("android afterPropertiesSet........");
    }}

c. @PostConstruct和@PreDestroy的使用

@Componentpublic class AIIphone {
    public AIIphone() {
        System.out.println("AIIphone.... contruct...");
    }
    @PostConstruct
    public void init(){
        System.out.println("AIIphone.....PostConstruct");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("AIIphone......PreDestroy");
    }}

2. BeanPostProcessor後置處理器

BeanPostProcessor【interface】:

bean的後置處理器:

在bean初始化前後進行一些處理工作。
   1. postProcessBeforeInitialization:在初始化之前工作
   2. postProcessAfterInitialization:在初始化之後工作

/** * 后置处理器,初始化前后进行处理工作 
*/@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor 
{    @Override    public Object postProcessBeforeInitialization(Object bean, String beanName) 
throws BeansException {        
System.out.println("postProcessBeforeInitialization....."+beanName+"=>"+bean);    
    return bean;//可对bean进行包装后返回    }   
     @Override    
     public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {   
           System.out.println("postProcessAfterInitialization....."+beanName+"=>"+bean); 
                  return bean;//可对bean进行包装后返回    }}

推薦教程:《

java教學

1教程

以上是spring生命週期詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn