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()方法取出來的對象要強制類型轉換。