程式設計師、spring、程式設計、開發
吐槽
Java工作多年,天天簡單的增刪查改,spring的介面真沒接觸過
用的做多就是spring的註解,天天簡單配置配置搞定
執行原理一概不知道
介面列表
ApplicationContextAware
ApplicationContext
BeanFactory
BeanFactoryAware
BeanNameAware
InitializingBean
Spring Aware是什麼
Spring提供Aware介面能讓Bean感知Spring容器的存在,即讓Bean可以使用Spring容器所提供的資源。(通俗講
感知資源
)
我公司大神經常也搞個Aware介面,開始看的很懵逼,後來想想spring的介面,哦明白了
案例理解
ApplicationContextAware
如要獲取容器中的某個Bean,可以繼承ApplicationContextAware,讓這個Bean擁有呼叫容器服務的能力。
獲取spring上下文ApplicationContext
然後透過ApplicationContext的getBean方法
獲取到指定Bean名稱的例項
ApplicationContextAware實戰應用程式碼案例
1
ApplicationContext
上面ApplicationContextAware例子已經用到了ApplicationContext
看到ApplicationContext繼承的介面就恐怖,這麼多介面
1
1
InitializingBean
InitializingBean介面為bean提供了
初始化方法的方式
,它只包括afterPropertiesSet方法,凡是繼承該介面的類,在初始化bean的時候都會執行該方法。
業務程式碼場景
對bean的成員屬性進行操作如,初始化值(最頻繁),排序等等。
BeanFactoryAware
在公司程式碼裡找了一圈,發現一個案例
檢查bean安全的功能,需要獲取BeanFactory
然後遍歷bean去檢查安全
private ListableBeanFactory beanFactory;
String[] strings = beanFactory。getBeanDefinitionNames();
Object object = beanFactory。getBean(beanName);
BeanFacotryAware總結
可以透過set來拿到我們要的物件,為什麼還要用這個beanFactory呢
beanFactory可以更加動態的獲取物件,傳入beanName即可
Object object = beanFactory。getBean(beanName); 透過這種方式獲取物件例項
spring介面總結
字尾
Aware的介面都是可以拿來獲取資源的(感知資源)
業務Bean初始要做些動作可以利用InitializingBean
透過ApplicationContextAware來獲取Bean
透過BeanFacotryAware來獲取Bean
透過普通set注入來獲取Bean (獲取Bean方式不一樣,各有優點)
最後spring還有其他強大介面,以後在總結下,面試能回答3個並結合實戰程式碼講已經不錯了