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檔案,内容:
<a href="https://github.com/chenhaoxiang/Java/tree/master/springBoot/src/main/java/cn/hncu/p3/p1_SpringAware" target="_blank">項目連結—具體包</a>