1. 程式人生 > >Spring註解驅動知識點簡單記錄二

Spring註解驅動知識點簡單記錄二

一:按條件註冊bean之@Conditional

  1. 簡介
     此註釋使得只有在特定條件滿足時才啟用一些配置。
  2. 現在我們建立了配置類,並且在配置類裡面建立了構建bean物件的方法
             
  3. 測試類
      
  4. 效果:
     
  5. 例項:現在我們要求根據一定的條件去建立不同名稱的bean物件,例如:通過判斷當前的操作
               系統型別建立,如果是window系統就建立名稱為lisi的person物件,如果是linux系統就創
               建名稱為zs的person物件。
     a:建立兩個實現了Condition介面的實現類(想要在@Conditional註解中使用下面的類就必須實現Condition介面)
           

           
     b:配置類
           
    c:測試類
          
    d:效果
         
  6. 注意:@Conditional這個註解,不僅僅可以標註在方法上,還可以標註在類上,如果
    標註在類上的話就表示,只有滿足@Conditional這個註解的條件,這個類中的方法才會
    生效。
    a:現在我們將@Conditional註解放到配置類上,並且使用WindowCondition條件
           

             
           執行測試類效果:
                 
     b:現在我們將@Conditional註解放到配置類上,並且使用LinuxCondition條件
          
          執行測試類效果:
          

二:給容器中快速匯入一個元件@Import

  1.  簡介
     ⑴給容器中註冊元件的兩種方式
          a:給自己寫的類註冊
                包掃描+元件標註註解(@Controller/@Serivce/@Repository/@Component)  
          b:不是我們自己寫的類,比如是我們匯入的第三方包,在包裡面的類沒有加上上面的註解
                使用@Import快速的給容器中匯入一個元件,容器中就會自動註冊這個元件,id預設全
                類名。
  2. 例項:
     a:首先我們建立一個Color類
        
     b:配置類
         
     c:測試類
          
     d:效果
          
  3. 下面我們使用@Import註解匯入Color類
         
       效果:
          

三:元件之ImportSelector

  1.  簡介
     使用ImportSelector選擇器,將會返回需要匯入的元件的全類名陣列。
  2. 例項
     a:建立兩個實體類blue,yellow
                 
          
      b:建立實現ImportSelector介面的實現類
          
      c:配置類
          
      d:測試類
          
      e:效果
          
          

四:元件之ImportBeanDefinitionRegistrar

  1. 簡介
     可以利用ImportBeanDefinitionRegistrar進行手動註冊bean物件到容器中去。
     
  2. 例項
     a:建立實現了ImportBeanDefinitionRegistrar介面的實現類
                   
      b:配置類
              
      c:執行測試類的效果
           

五:@Bean生命週期之初始化和銷燬方法

  1.  簡介
     bean的生命週期指的是bean從建立到初始化到銷燬的過程。並且bean的生命週期是由
     容器來管理的。
  2. 單例項時候初始化和銷燬的例子
     a:建立實體類
                  
     b:建立配置類(預設單例項)
         
    c:建立測試類
         
    d:效果
         
  3. 那麼在多例項的情況下呢?
      a:我們將配置類加上多例項的配置
           
      b:執行測試類效果
           
     c:原因
           因為多例項初始化容器的時候是不會建立bean物件的,只有在獲取bean例項物件的時候它才會建立
           bean物件,所以我們可以嘗試獲取我們需要建立的bean物件,就會呼叫初始化方法了。但是它是不會
           呼叫銷燬的方法的,因為容器不會管理這個多例項的bean的,容器只會幫助建立這個多例項bean,所以
           容器不會呼叫銷燬方法。如果需要銷燬就必須手動自己呼叫。
     d:在測試類中加上獲取bean物件的方法
           
          效果:
               
  4. 實現初始化和銷燬的方法我們還可以通過實體bean實現InitializingBean(初始化介面)和
    DisposableBean(銷燬介面)去解決。
    a:建立實體類
          
     b:配置類
         
     c:測試類
         
     d:效果
         
  5. 初始化註解PostConstruct和PreDestroy
     a:簡介
          @PostConstruct:在bean建立完成並且屬性賦值完成之後,再執行初始化方法。
          @PreDestroy:在容器銷燬bean之前通知我們進行清理工作
    b:建立實體
          
    c:配置類
         
    d:測試類
         
    e:效果
        

 

上一篇:Spring註解驅動知識點簡單記錄一

下一篇:Spring註解驅動知識點簡單記錄三

文章目錄