zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          -------------------------------------------
          崇尚原創(chuàng)精神,
          文章歡迎轉(zhuǎn)載,
          請您注明出處,
          在此特別聲明。
          版權(quán)所有@zhyiwww
          引用鏈接
          http://www.aygfsteel.com/zhyiwww

          --------------------------------------------

          常用鏈接

          留言簿(33)

          隨筆分類(626)

          朋友的博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1560505
          • 排名 - 11

          最新評論

          閱讀排行榜

          評論排行榜

          ??
          開始學習Spring了,想做第一個程序測試一下,所以就從網(wǎng)上找到了一個例子,代碼如下,
          (先寫好了HelloBean)
          ?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());
          ????}
          這段程序其實挺簡單,但是,就是調(diào)試不能通過。可能會有兩種錯誤:
          第一,找不到bean.xml,因為你的文件位置放置,和你的代碼導入有問題,也就是說沒有找到對應的位置。
          第二,new?XmlBeanFactory(is)這個地方會出現(xiàn)錯誤。因為XmlBeanFactory的構(gòu)造器要求的是一個Resource對象的實例,但是,現(xiàn)在是一個InputStream的實例,所以,程序調(diào)試不能通過。

          問題解決辦法:
          第一:如果你的bean.xml在src目錄下面,那么可以使用InputStream in = ClassLoader.getSystemResourceAsStream("applicationContext.xml");的辦法來取得流對象。
          第二:我們可以封裝一個Resource的實例,Resource是一個接口,其實現(xiàn)類是InputStreamResource,所以,可以創(chuàng)建一個InputStreamResource對象,實現(xiàn)對InputStream的封裝。

          改進后的代碼如下:
          package org.zy.demo.spring.handle;

          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.InputStream;

          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.beans.factory.xml.XmlBeanFactory;
          import org.springframework.core.io.InputStreamResource;
          import org.springframework.core.io.Resource;
          import org.zy.demo.spring.bean.Hello;

          public class HelloHandle {

          ??? public static void main(String[] args){
          ??? ???
          ???
          ??? ??? ??? InputStream in = ClassLoader.getSystemResourceAsStream("applicationContext.xml");
          ??? ??? ??? System.out.println(in);
          ??? ??? ???
          ??? ??? ??? Resource r = new InputStreamResource(in);
          ??? ??? ???
          ??? ??? ??? XmlBeanFactory fac = new XmlBeanFactory(r);
          ??? ??? ??? System.out.println(fac);
          ??? ??? ???
          ??? ??? ??? Hello hello = (Hello)fac.getBean("hello");
          ??? ??? ??? System.out.println(hello);
          ??? ??? ???
          ??? ??? ??? System.out.println(hello.getHellStr());
          ??? }
          ???
          }

          Hello 的代碼:
          package org.zy.demo.spring.bean;

          public class Hello {
          ??? String hellStr = "hello,zhangyi";

          ??? public String getHellStr() {
          ??? ??? return hellStr;
          ??? }

          ??? public void setHellStr(String hellStr) {
          ??? ??? this.hellStr = hellStr;
          ??? }
          ?
          }
          Bean配置文件為:
          <?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="hello" class="org.zy.demo.spring.bean.Hello">
          ??? ??? <property name="hellStr">
          ??? ??? ??? <value>Hello,this is the first spring demo of zhangyi.</value>
          ??? ??? </property>
          ??? </bean>


          </beans>
          此文件放置在src目錄下。
          此程序調(diào)試通過,結(jié)果如下:
          java.io.BufferedInputStream@1a33d48
          log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
          log4j:WARN Please initialize the log4j system properly.
          org.springframework.beans.factory.xml.XmlBeanFactory defining beans [hello]; root of BeanFactory hierarchy
          org.zy.demo.spring.bean.Hello@941db6
          Hello,this is the first spring demo of zhangyi.

          希望對spring的初學者有所幫助。


          ===============================================================================================

          我的第二個測試小程序,代碼如下:
          ??? public void sayHello2(){
          ??? ??? ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml");
          ??? ??? System.out.println(ctx);
          ??? ???
          ??? ??? Hello hello = (Hello)ctx.getBean("hello");
          ??? ??? System.out.println(hello);
          ??? ???
          ??? ??? System.out.println(hello.getHellStr());
          ??? ???
          ??? }
          這一段程序和上面的代碼差不多。容易出錯的地方在于目錄,
          我的目錄結(jié)構(gòu)如下圖:
          directory.png
          因為,默認情況下,程序查找文件的目錄是你的工作目錄,在eclipse下,就是工程的目錄
          但是,我們的xml文件是在src目錄下面,所以,在路經(jīng)上要使用/src/applicationContext.xml






          |----------------------------------------------------------------------------------------|
                                     版權(quán)聲明  版權(quán)所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-06-30 23:38 zhyiwww 閱讀(973) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 乌审旗| 安化县| 浏阳市| 福安市| 湛江市| 普安县| 浮山县| 从江县| 临朐县| 西林县| 天台县| 平度市| 贡山| 平顶山市| 乐陵市| 滨海县| 海宁市| 大余县| 潍坊市| 辽阳市| 土默特左旗| 临清市| 山西省| 韩城市| 鄢陵县| 潞城市| 叶城县| 佛坪县| 高密市| 朔州市| 安化县| 嫩江县| 九龙坡区| 鹰潭市| 张家界市| 长宁区| 萍乡市| 安福县| 永兴县| 临武县| 旺苍县|