第一?Spring程式 作者:林信良
类别: JAVA教程
第一??Spring程式
首先我??要先取得Spring的相晷?n案,Spring的?n案放在SourceForge上,咀址是:http://sourceforge.net/project/showfiles.php?group_id=73357
撰??此文?r,Spring最新的版本是1.1.1,有????下蒌版本,一??是spring-framework-1.1.1-with- dependencies.zip,一??是spring-framework-1.1.1.zip,with-dependencies的包括一些 ant、jakarta-commons、struts、velocity等等其它檫源Java?0傅南嘁??n案,如果您也需要呃些相晷?n案,可以下蒌呃?? 版本,如果您已??有呃些相晷?n案,?t只需要下蒌spring-framework-1.1.1.zip呃???n案。
下蒌zip?n案?K解?嚎s之後,在dist目??下就是使用Spring所需要的相晷?n案,如果下蒌的是with-dependencies版本,?t在lib目??中的是您可能??用到的相依?n案。在dist目??下,spring-core.jar是Spring的核心,??於撰?????蔚????C程式?碚f,使用呃??核心即可,如果日後需要使用到Spring其它的子框架支援,再?⑵渌?的jar?n案加入即可,例如spring-aop.jar、spring-webmvc.jar等等。您也可以直接使用spring.jar呃???n案,它包括了所有Spring支援的功能所需要的所有???e,而不再需要加入???e的jar?n案。
就我?? 的第一??Spring程式,只要spring-core.jar呃???n案即可,它唯一相依的其它?0??n案,是commons-logging.jar,您 可以在lib目??的jakarta-commons目??中找到,?⑦@?????n案的位置加入至CLASSPATH中,我??就可以檫始撰??第一??Spring程式。
?碜???我??的第一??酵件(component),它只是一?????蔚氖avaBean,用?硐蛐碌氖褂谜叽蛘泻簦杭BR>
package onlyfun.caterpillar;
public class HelloBean {
private String helloWord = "Hello!World!";
public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}
public String getHelloWord() {
return helloWord;
}
}
HelloBean有盍韵的"Hello!World!"字串,我??也可以透咿setter?碓O定新的招呼遮,不咿我??不尤自撰??程式?碜鬟@些事,而是在酵?B?n案定柳,由Spring???槲???作韵定的?幼鳎?我??撰??bean.xml:
<?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="helloBean" class="onlyfun.caterpillar.HelloBean">
<property name="helloWord"><value>Hello!Justin!</value></property>
</bean>
</beans>
bean.xml中定柳了JavaBean的?e名陪?碓搭??e,?嘶`中韵定了我??希望注入至JavaBean的字串值,bean.xml必??在您的CLASSPATH可以存取到的目??中,也杂是?F行的工作目??,在Web程式中可以是在classes目??下,我??呃??使用的是???C程式的方式, 所以?⒅?置於?F行的工作目??中(CLASSPATH都??韵定 . 吧),接著我??撰??一?????蔚??y??程式:
package onlyfun.caterpillar;
import java.io.*;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
public class SpringTest {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("bean.xml");
BeanFactory factory = new XmlBeanFactory(is);
HelloBean hello = (HelloBean) factory.getBean("helloBean");
System.out.println(hello.getHelloWord());
}
}
呃是?谋容^低?哟蔚慕嵌??硎褂糜pring的IoC容器功能,藉由BeanFactory?碜x取酵?B?n案?K完成依??的晷??注入,呃??的依??是什?N?指的是 HelloBean相依於String物件,透咿setter所保留的介面,我??使用setter injection?硗瓿蛇@??依??注入,而不是?⒄泻粽Z??死在HelloBean,BeanFactory是整??Spring的重?c所在,整??Spring的核心都??览著它,在呃??使用的是XmlBeanFactory,????坐取XML酵?B?n案,??然我??也可以使用properties?n案。
BeanFactory坐取Bean的酵?B韵定?K完成晷?S居罪之後,我??可以藉由getBean()方法?K指定Bean的?e名?砣〉???例,?砜纯???肴忒行之後的效果:
2004/10/21 上午 10:28:00
org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
儋??: Loading XML bean definitions from resource for InputStream
2004/10/21 上午 10:28:00
org.springframework.beans.factory.support.AbstractBeanFactory getBean
儋??: Creating shared instance of singleton bean \'helloBean\'
Hello!Justin!
如果今天您要想改??招呼遮,?t只要更改bean.xml就可以了,不用修改主要的程式,?谋容^一般的角度?砜矗?就意味著如果您想要改??一些物件之殓的依??晷?S,?t只要修改酵?B?n即可,而不用修改酵件的任何一行程式。
- 上一篇: 用了12个小时完成一个计算器小作业
- 下一篇: JDBC常见问题 -来自sun论坛
-= 资 源 教 程 =-
文 章 搜 索