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

程序員、spring、編程、開發

吐槽

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

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

運行原理一概不知道

接口列表

  1. ApplicationContextAware
  2. ApplicationContext
  3. BeanFactory
  4. BeanFactoryAware
  5. BeanNameAware
  6. 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接口總結

  1. 後綴Aware的接口都是可以拿來獲取資源的(感知資源)
  2. 業務Bean初始要做些動作可以利用InitializingBean
  3. 通過ApplicationContextAware來獲取Bean
  4. 通過BeanFacotryAware來獲取Bean
  5. 通過普通set注入來獲取Bean (獲取Bean方式不一樣,各有優點)

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


分享到:


相關文章: