今天收到一個工作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帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!