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

程序員、spring、編程、開發

吐槽

Java工作多年,天天簡單的增刪查改,spring的接口真沒接觸過

用的做多就是spring的註解,天天簡單配置配置搞定

運行原理一概不知道

接口列表

ApplicationContextAwareApplicationContextBeanFactoryBeanFactoryAwareBeanNameAwareInitializingBean

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個並結合實戰代碼講已經不錯了