今天收到一個工作4年的粉絲的面試題。 問題是: “Spring中有哪些方式可以把Bean註入到IOC容器”。 他說這道題是所有面試題裡面回答最好的,但是看面試官的表情,好像不太對。 我問他怎麼回答的,他說: “介面註入”、“Setter註入”、“構造器註入”。 為什麼不對?來看看普通人和高手的回答。 ...
今天收到一個工作4年的粉絲的面試題。
問題是: “Spring中有哪些方式可以把Bean註入到IOC容器”。
他說這道題是所有面試題裡面回答最好的,但是看面試官的表情,好像不太對。
我問他怎麼回答的,他說: “介面註入”、“Setter註入”、“構造器註入”。
為什麼不對?來看看普通人和高手的回答。
普通人:
嗯。。。。。
高手:
好的,把Bean註入到IOC容器裡面的方式有7種方式
- 使用xml的方式來聲明Bean的定義,Spring容器在啟動的時候會載入並解析這個xml,把bean裝載到IOC容器中。
- 使用@CompontScan註解來掃描聲明瞭@Controller、@Service、@Repository、@Component註解的類。
- 使用@Configuration註解聲明配置類,並使用@Bean註解實現Bean的定義,這種方式其實是xml配置方式的一種演變,是Spring邁入到無配置化時代的里程碑。
- 使用@Import註解,導入配置類或者普通的Bean
- 使用FactoryBean工廠bean,動態構建一個Bean實例,Spring Cloud OpenFeign裡面的動態代理實例就是使用FactoryBean來實現的。
- 實現ImportBeanDefinitionRegistrar介面,可以動態註入Bean實例。這個在Spring Boot裡面的啟動註解有用到。
- 實現ImportSelector介面,動態批量註入配置類或者Bean對象,這個在Spring Boot裡面的自動裝配機制裡面有用到。
以上就是我對這個問題的理解。
總結
工作了4年,IOC和DI都沒有搞清楚,作為面試官, 想給你放水都放不了啊。
這道題目也很有意義,要想更加優雅的去解決一些實際業務問題,首先得有足夠多的工具積累。
你可曾想過,Bean的註入竟然有這麼多方式,而且還有些方式是沒聽過的呢?
需要高手面試文檔(附贈阿裡內部十萬字面試文檔)或者有不懂的技術面試題想咨詢的小伙伴可以後臺私信【Mic】或者評論區留言。
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!