亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Srping容器

Srping容器

muke3861695 2017-12-23 12:24:41
怎么理解是Spring的容器 ?怎么能稱作一個容器
查看完整描述

1 回答

已采納
?
慕圣0830664

TA貢獻41條經驗 獲得超26個贊

Spring的IOC就是一個容器,也可以稱為一個Bean工廠,專用用來生成Bean的實例。你可以簡單將IOC理解為一個Map<String, Object>,其中存放了實例化了的對象,我們可以通過指定的key獲取對應的實例對象。簡單說下Spring IOC的執行流程(基于xml格式):

假如有這樣一個配置文件為:applicationContext.xml

<beans>

????<bean id="person" class="com.imooc.Person">

???????? <property name="addr" ref="address"></property>

???? </bean>

???? <bean id="address" class="com.imooc.Address"></bean>

</beans>


1、讀取配置文件:applicationContext.xml(默認的文件名稱就是這個)

2、實例化對象。根據讀取到的配置文件信息,利用反射生成“com.imooc.Person”,“com.imooc.Address”這兩個類的實例Person與Address,,并存放到Map中,key為id的屬性值,即:map.put("person",Person), map.put("address",Address)。

3、注入屬性值。找到Person對象中的屬性addr,獲取該屬性的set方法,反射調用該方法,參數為以address為key的對應的value:即map.get("address"),method.invoke(Person, map.get("address"));


獲取Bean的方式一般是這樣:

//?ClassPathXmlApplicationContext就是一個工廠接口的一個實現類

ApplicationContext ?ac = new ClassPathXmlApplicationContext("applicationContext.xml");

Person person = ac.getBean("person"); // 這里的"person"就是xml中的id的屬性值

System.out.println(person.getAddr());?


要是有興趣,最好的辦法的當然是自己去實現一個簡單springIOC容器(包括xml方式和Annotation方式)。這樣你就會理解的更透徹。。

查看完整回答
2 反對 回復 2017-12-24
  • 1 回答
  • 0 關注
  • 1080 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號