工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

程式設計師、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名稱的例項

工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

ApplicationContextAware實戰應用程式碼案例

1

ApplicationContext

上面ApplicationContextAware例子已經用到了ApplicationContext

看到ApplicationContext繼承的介面就恐怖,這麼多介面

工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

1

1

工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

InitializingBean

InitializingBean介面為bean提供了

初始化方法的方式

,它只包括afterPropertiesSet方法,凡是繼承該介面的類,在初始化bean的時候都會執行該方法。

業務程式碼場景

對bean的成員屬性進行操作如,初始化值(最頻繁),排序等等。

工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

BeanFactoryAware

在公司程式碼裡找了一圈,發現一個案例

檢查bean安全的功能,需要獲取BeanFactory

然後遍歷bean去檢查安全

private ListableBeanFactory beanFactory;

String[] strings = beanFactory。getBeanDefinitionNames();

Object object = beanFactory。getBean(beanName);

工作3年出去面試Java,被鄙視spring的介面有哪些都不清楚

BeanFacotryAware總結

可以透過set來拿到我們要的物件,為什麼還要用這個beanFactory呢

beanFactory可以更加動態的獲取物件,傳入beanName即可

Object object = beanFactory。getBean(beanName); 透過這種方式獲取物件例項

spring介面總結

字尾

Aware的介面都是可以拿來獲取資源的(感知資源)

業務Bean初始要做些動作可以利用InitializingBean

透過ApplicationContextAware來獲取Bean

透過BeanFacotryAware來獲取Bean

透過普通set注入來獲取Bean (獲取Bean方式不一樣,各有優點)

最後spring還有其他強大介面,以後在總結下,面試能回答3個並結合實戰程式碼講已經不錯了