Spring註解驅動知識點簡單記錄二
阿新 • • 發佈:2018-12-09
一:按條件註冊bean之@Conditional
- 簡介
此註釋使得只有在特定條件滿足時才啟用一些配置。 - 現在我們建立了配置類,並且在配置類裡面建立了構建bean物件的方法
- 測試類
- 效果:
- 例項:現在我們要求根據一定的條件去建立不同名稱的bean物件,例如:通過判斷當前的操作
系統型別建立,如果是window系統就建立名稱為lisi的person物件,如果是linux系統就創
建名稱為zs的person物件。
a:建立兩個實現了Condition介面的實現類(想要在@Conditional註解中使用下面的類就必須實現Condition介面)
b:配置類
c:測試類
d:效果
-
注意:@Conditional這個註解,不僅僅可以標註在方法上,還可以標註在類上,如果
標註在類上的話就表示,只有滿足@Conditional這個註解的條件,這個類中的方法才會
生效。
a:現在我們將@Conditional註解放到配置類上,並且使用WindowCondition條件
執行測試類效果:
b:現在我們將@Conditional註解放到配置類上,並且使用LinuxCondition條件
執行測試類效果:
二:給容器中快速匯入一個元件@Import
- 簡介
⑴給容器中註冊元件的兩種方式
a:給自己寫的類註冊
包掃描+元件標註註解(@Controller/@Serivce/@Repository/@Component)
b:不是我們自己寫的類,比如是我們匯入的第三方包,在包裡面的類沒有加上上面的註解
使用@Import快速的給容器中匯入一個元件,容器中就會自動註冊這個元件,id預設全
類名。 - 例項:
a:首先我們建立一個Color類
b:配置類
c:測試類
d:效果
- 下面我們使用@Import註解匯入Color類
效果:
三:元件之ImportSelector
- 簡介
使用ImportSelector選擇器,將會返回需要匯入的元件的全類名陣列。 - 例項
a:建立兩個實體類blue,yellow
b:建立實現ImportSelector介面的實現類
c:配置類
d:測試類
e:效果
四:元件之ImportBeanDefinitionRegistrar
- 簡介
可以利用ImportBeanDefinitionRegistrar進行手動註冊bean物件到容器中去。
- 例項
a:建立實現了ImportBeanDefinitionRegistrar介面的實現類
b:配置類
c:執行測試類的效果
五:@Bean生命週期之初始化和銷燬方法
- 簡介
bean的生命週期指的是bean從建立到初始化到銷燬的過程。並且bean的生命週期是由
容器來管理的。 - 單例項時候初始化和銷燬的例子
a:建立實體類
b:建立配置類(預設單例項)
c:建立測試類
d:效果
- 那麼在多例項的情況下呢?
a:我們將配置類加上多例項的配置
b:執行測試類效果
c:原因
因為多例項初始化容器的時候是不會建立bean物件的,只有在獲取bean例項物件的時候它才會建立
bean物件,所以我們可以嘗試獲取我們需要建立的bean物件,就會呼叫初始化方法了。但是它是不會
呼叫銷燬的方法的,因為容器不會管理這個多例項的bean的,容器只會幫助建立這個多例項bean,所以
容器不會呼叫銷燬方法。如果需要銷燬就必須手動自己呼叫。
d:在測試類中加上獲取bean物件的方法
效果:
- 實現初始化和銷燬的方法我們還可以通過實體bean實現InitializingBean(初始化介面)和
DisposableBean(銷燬介面)去解決。
a:建立實體類
b:配置類
c:測試類
d:效果
- 初始化註解PostConstruct和PreDestroy
a:簡介
@PostConstruct:在bean建立完成並且屬性賦值完成之後,再執行初始化方法。
@PreDestroy:在容器銷燬bean之前通知我們進行清理工作
b:建立實體
c:配置類
d:測試類
e:效果