摘錄地址:
http://www.codechina.net/resource/html/2005-04/10/16124.htmlLearn Spring in spring(二) |
二、spring管理對(duì)象的簡(jiǎn)單例子
Bromon原創(chuàng) 請(qǐng)尊重版權(quán)
任何需要交給spring管理的對(duì)象,都必須在配置文件中注冊(cè),這個(gè)過(guò)程被稱(chēng)為wiring,下面做一個(gè)最簡(jiǎn)單的Hello?world演示,我們將要注冊(cè)的類(lèi)如下:
- /*
- ?*?創(chuàng)建日期?2005-3-22
- ?*/
- package?org.bromon.spring.test;
- /**
- ?*?@author?Bromon
- ?*/
- public?class?HelloTalker?
- {
- ????public?String?greeting()
- ????{
- ????????return?"hello?world";
- ????}
- }
然后我們來(lái)編寫(xiě)一個(gè)spring配置文件,文件名任意,在我這里它是springConfig.xml,需要注意的是這個(gè)文件應(yīng)該存放在classpath所包含的路徑中:
- <?xml?version="1.0"?encoding="UTF-8"?>
- <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean?id=”helloTalker”?class=”?org.bromon.spring.test.HelloTalker”>
- </bean>
- </beans>
通過(guò)使用bean標(biāo)簽,注冊(cè)了一個(gè)HelloTalker對(duì)象,它的名字叫做helloTalker。然后我們編寫(xiě)一個(gè)測(cè)試類(lèi),它的工作是利用spring框架提供的接口,加載配置文件,通過(guò)指定對(duì)象的id,獲得一個(gè)對(duì)象。它的代碼如下:
- /*
- ?*?創(chuàng)建日期?2005-3-17
- ?*/
- package?org.bromon.spring.test.junit;
- import?java.io.FileInputStream;
- import?org.springframework.beans.factory.xml.XmlBeanFactory;
- import?org.springframework.context.ApplicationContext;
- import?org.springframework.context.support.ClassPathXmlApplicationContext;
- import?org.bromon.spring.test;
- /**
- ?*?@author?Bromon
- ?*/
- public?class?TestStudentManager?extends?TestCase?{
- ????public?void?testHelloTalker()?
- ????{
- ????????try
- ????????{
- ????????????ApplicationContext?context?=new?ClassPathXmlApplicationContext("springConfig.xml");
- ????????????
- HelloTalker?ht=(HelloTalker)context.getBean(“helloTalker”);
- System.out.println(ht.greeting());
- ????????}catch(Exception?e)
- ????????{
- ????????????e.printStackTrace();
- ????????}
- ????}
- }
這個(gè)程序就完成了,因?yàn)橹挥幸粋€(gè)對(duì)象HelloTalker被注冊(cè)到了spring中,所以不存在對(duì)象間的依賴(lài),當(dāng)然也就不涉及依賴(lài)注入。下面演示一個(gè)簡(jiǎn)單的依賴(lài)注入:
第一步是修改HelloTalker,增加一個(gè)String?name屬性:
為該屬性編寫(xiě)set方法,該方法必須嚴(yán)格遵守javabean的命名規(guī)則:
- public?void?setName(String?name)
- {
- this.name=name;
- }
修改greeting方法:
- public?String?greeting()
- {
- return?"hello?"+name;
- }
如你所見(jiàn),name屬性沒(méi)有初試化,因?yàn)樗闹祵⒃谶\(yùn)行過(guò)程中被spring動(dòng)態(tài)注射入。
第二步,修改springConfig.xml中唯一的這個(gè)bean配置:
- <bean?id=”helloTalker”?class=”?org.bromon.spring.test.HelloTalker”>
- <property?name=”name”>
- <value>bromon</value>
- </property>
- </bean>
修改完成。我們將一個(gè)名字”bromon”寫(xiě)死在springConfig.xml中,它會(huì)被動(dòng)態(tài)的注入到HelloTalker的name屬性中,greeting方法將會(huì)把它打印出來(lái)。重新運(yùn)行剛才的junit類(lèi),可以看到結(jié)果。
我們只演示了如何注入一個(gè)最簡(jiǎn)單的String,實(shí)際上我們可以注入任何值類(lèi)型,也可以注入任何類(lèi)的實(shí)例,也可以注入List、Map、Properties。配置文件管理了所有的對(duì)象和對(duì)象間的關(guān)系,而對(duì)象則只負(fù)責(zé)執(zhí)行自己的功能,他們的職責(zé)越少,藕合度越低,系統(tǒng)就越容易測(cè)試,管理維護(hù)也更容易。
<bean>標(biāo)簽還有很多屬性,用于指定對(duì)象如何被實(shí)例化,它也有很多子標(biāo)簽用于配置對(duì)象的屬性,請(qǐng)大家參考相關(guān)的DTD和文檔,能夠很快的掌握。本系列文章不是spring手冊(cè),spring的基礎(chǔ)知識(shí)請(qǐng)參考spring?in?action,足夠詳細(xì)準(zhǔn)確。后面的章節(jié)更多的討論系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)的一些細(xì)節(jié)和高級(jí)特性。
下一篇:在spring中進(jìn)行hibernate開(kāi)發(fā)
|

歡迎大家訪(fǎng)問(wèn)我的個(gè)人網(wǎng)站
萌萌的IT人