spring的ioc容器能夠幫我們自動new對象,對象交給spring管之後我們不用自己手動去new對象了。那麼它的原理是什麼呢?是怎麼實作的呢?下面我來簡單的模拟一下spring的機制,相信看完之後就會對spring的原理有一定的了解。
spring使用beanfactory來執行個體化、配置和管理對象,但是它隻是一個接口,裡面有一個getbean()方法。我們一般都不直接用beanfactory,而是用它的實作類applicationcontext,這個類會自動解析我們配置的applicationcontext.xml,然後根據我們配置的bean來new對象,将new好的對象放進一個map中,鍵就是我們bean的id,值就是new的對象。
首先我們建立一個beanfactory接口
然後建立一個beanfactory的實作類classpathxmlapplicationcontext.java
然後配置applicationcontext.xml
建立類的時候順便示範一下工廠模式,其實beanfactory它也是一種工廠模式的。
現在來看一看效果吧,寫一個類測試一下:
由于map容器裡面儲存的是object類型,是以通過getbean()方法取出來的對象要強制類型轉換。