【Java面試】Spring中有哪些方式可以把Bean注入到IOC容器?

跟著Mic學架構 發表於 2022-05-23
Java 面試 Spring

今天收到一個工作4年的粉絲的面試題。

問題是: “Spring中有哪些方式可以把Bean注入到IOC容器”。

他說這道題是所有面試題裡面回答最好的,但是看面試官的表情,好像不太對。

我問他怎麼回答的,他說: “介面注入”、“Setter注入”、“構造器注入”。

為什麼不對?來看看普通人和高手的回答。

普通人:

嗯。。。。。

高手:

好的,把Bean注入到IOC容器裡面的方式有7種方式

  1. 使用xml的方式來宣告Bean的定義,Spring容器在啟動的時候會載入並解析這個xml,把bean裝載到IOC容器中。
  2. 使用@CompontScan註解來掃描宣告瞭@Controller、@Service、@Repository、@Component註解的類。
  3. 使用@Configuration註解宣告配置類,並使用@Bean註解實現Bean的定義,這種方式其實是xml配置方式的一種演變,是Spring邁入到無配置化時代的里程碑。
  4. 使用@Import註解,匯入配置類或者普通的Bean
  5. 使用FactoryBean工廠bean,動態構建一個Bean例項,Spring Cloud OpenFeign裡面的動態代理例項就是使用FactoryBean來實現的。
  6. 實現ImportBeanDefinitionRegistrar介面,可以動態注入Bean例項。這個在Spring Boot裡面的啟動註解有用到。
  7. 實現ImportSelector介面,動態批量注入配置類或者Bean物件,這個在Spring Boot裡面的自動裝配機制裡面有用到。

以上就是我對這個問題的理解。

總結

工作了4年,IOC和DI都沒有搞清楚,作為面試官, 想給你放水都放不了啊。

這道題目也很有意義,要想更加優雅的去解決一些實際業務問題,首先得有足夠多的工具積累。

你可曾想過,Bean的注入竟然有這麼多方式,而且還有些方式是沒聽過的呢?

需要高手面試文件(附贈阿里內部十萬字面試文件)或者有不懂的技術面試題想諮詢的小夥伴可以後臺私信【Mic】或者評論區留言。

file

版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!