天天看點

【Spring】Spring進階話題-Spring Aware分析示例運作結果

Spring的依賴注入的最大亮點就是你所有的Bean對Spring容器的存在是沒有意識的。

也就是說,你可以把你的容器換成别的容器,如Google Guice,這時Bean之間的耦合度很低。

但是在實際項目中,基本上不可避免的要用到Spring容器本身的功能資源,這時你的Bean必須要意識到Spring容器的存在,才能調用Spring所提供的資源,這就是所謂的Spring Aware。

其實Spring Aware本來就是Spring設計用來架構内部使用的,如果使用了Spring Aware,你的Bean就會和Spring架構耦合。也就不能換容器了。

現在把Spring提供的Aware接口列出來:

Spring提供的Aware接口

BeanNameAware

獲得容器中Bean的名稱

BeanFactoryAware

獲得目前bean factory,這樣可以調用容器的服務

ApplicationContextAware*

目前的application context,這樣可以調用容器的服務

MessageSourceAware

獲得message source-國際化的時候用的,這樣可以獲得文本資訊

ApplicationEventPublisherAware

應用實踐釋出器,可以釋出事件

ResourceLoaderAware

獲得資源加載器,可以獲得外部資源檔案

Spring Aware的目的是為了讓Bean獲得Spring容器的服務。

因為ApplicationContext接口內建了MessageSource接口、ApplicationEventPublisher接口和ResourceLoader接口,是以Bean繼承ApplicationContextAware可以獲得Spring容器的所有服務,但是,原則上我們還是用到什麼接口了,就實作什麼接口。

在這裡的示例,簡單的示範BeanNameAware接口和ResourceLoaderAware接口。

一樣的,進行本示例的示範,需要先配置好Maven和Spring哦、

見:

<a href="http://blog.csdn.net/qq_26525215/article/details/53010442" target="_blank">【Spring】基于IntelliJ IDEA搭建Maven</a>

因為要示範外部資源,是以先準備好一個外部檔案資源,

我就建在java檔案目錄下,test.txt檔案,内容:

【Spring】Spring進階話題-Spring Aware分析示例運作結果

<a href="https://github.com/chenhaoxiang/Java/tree/master/springBoot/src/main/java/cn/hncu/p3/p1_SpringAware" target="_blank">項目連結—具體包</a>