CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

关于XmlBeanFactory的一个简单问题...

楼主Pt_Coffee(Pt.Mr.咖啡)2005-07-14 13:09:48 在 Java / 框架、开源 提问

InputStream   is   =   getClass().getResourceAsStream("bean.xml");  
  System.out.println(abc);    
  XmlBeanFactory   factory   =   new   XmlBeanFactory(is);    
   
  上面是在大多数资料中都可以看见的使用xml文件构造Bean工厂的代码片断。  
  但是为什么我在使用的时候才发现,XmlBeanFacgtory没有参数为InputStream的构造函数...  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(is);将编译不通过...  
  XmlBeanFactory(Resource   resource)是它的一个构造函数...  
   
  这是为什么?是不是Spring的版本问题? 问题点数:20、回复次数:16Top

1 楼sgdb(神天月晓)回复于 2005-07-14 14:10:07 得分 0

建议使用  
  ApplicationContext   ctx  
                  =   new   FileSystemXmlApplicationContext("bean.xml");Top

2 楼yiwg(蓝蓝的天,蓝蓝的梦)回复于 2005-07-14 14:39:43 得分 0

就用楼上所说的:ApplicationContext   ctx=new   FileSystemXmlApplicationContext("bean.xml");  
          HelloBean   hellobean=(HelloBean)ctx.getBean("TheAction");  
          System.out.println(hellobean.getHelloWord()   );  
  Top

3 楼Pt_Coffee(Pt.Mr.咖啡)回复于 2005-07-19 08:35:59 得分 0

请回答如题的问题:  
          XmlBeanFactory没有提供参数为InputStream的构造函数,为什么可以那样使用?是因为版本问题吗?Top

4 楼sgdb(神天月晓)回复于 2005-07-19 11:53:15 得分 0

不清楚,从我开始用spring的时候好象就没看到过这样的方法Top

5 楼zhenyang2002(珍阳)回复于 2005-07-21 09:46:46 得分 0

import   org.springframework.core.io.ClassPathResource;  
  ClassPathResource   resource   =   new   ClassPathResource("bean.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(resource);Top

6 楼redarm(红军)回复于 2005-11-11 16:11:36 得分 0

我也遇到同样的问题:  
  InputStream   ins   =   new   FileInputStream("src/appcontext.xml");    
  BeanFactory   factory   =   new   XmlBeanFactory(ins);    
  这样写就报错.  
  Top

7 楼hllyq2000(追波逐浪)回复于 2005-11-11 16:25:01 得分 0

public   XmlBeanFactory(Resource   resource)   throws   BeansException  
  public   interface   Resource   extends   InputStreamSource  
  public   interface   InputStreamSource   {  
   
  /**  
    *   Return   an   InputStream.  
    *   It   is   expected   that   each   call   creates   a   <i>fresh</i>   stream.  
    *   @throws   IOException   if   the   stream   could   not   be   opened  
    */  
  InputStream   getInputStream()   throws   IOException;  
   
  }  
  这个是spring的源代码,应该很清楚吧Top

8 楼esprit0318(遥远的。。。AZA~~AZA~~FIGHTING......)回复于 2005-11-11 19:09:22 得分 0

有这样的写法:  
  InputStream   is   =   new   FileInputStream("bean.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(is);  
  但没有看到过楼主那样的写法Top

9 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2005-11-11 20:13:30 得分 0

看这个帖子  
  http://community.csdn.net/Expert/topic/4316/4316849.xml?temp=.2286493  
   
  那个作者罗时飞,专门生产垃圾。Top

10 楼vvfish119(肥肥)回复于 2005-11-17 17:40:37 得分 0

esprit0318(遥远的。。。)  
   
  你那样的写法也会出现和楼主一样的错误吧,因为XmlBeanFactory没有提供参数为InputStream的构造函数,至于为什么好几篇文章中都这么写,我也不清楚,高手来解答下吧Top

11 楼esprit0318(遥远的。。。AZA~~AZA~~FIGHTING......)回复于 2005-11-18 09:22:23 得分 0

嗯,试了一下,确实不行  
  之前也没注意,一直用其他方法来写的  
  高手来解释一下吧,为什么一些书中都说:  
  InputStream   is   =   new   FileInputStream("bean.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(is);  
  这样写是对的呢?Top

12 楼hllyq2000(追波逐浪)回复于 2005-11-18 10:15:58 得分 0

Resource   res   =   new   FileSystemResource("beans.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(res);  
   
  ClassPathResource   res   =   new   ClassPathResource("beans.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(res);  
   
  这两种方式都是spring_reference   提供的写法  
   
  而XmlBeanFactory只有public   XmlBeanFactory(Resource   resource)   throws   BeansException这个构造方法,因此我觉得  
  InputStream   is   =   new   FileInputStream("bean.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(is);  
  应该是错误的.而  
  Resource   res   =   new   FileSystemResource("beans.xml");  
  XmlBeanFactory   factory   =   new   XmlBeanFactory(res);  
  这种方式应该比较常见.Top

13 楼hllyq2000(追波逐浪)回复于 2005-11-18 10:16:58 得分 0

遇到这样的问题,建议去看看spring_reference和spring的源代码,  
  它已经描述的非常明确了.Top

14 楼wafer_w(流浪的风)回复于 2006-02-08 01:18:34 得分 0

是版本问题,hibernate2.1用你说的那种方法  
  hibernate3.0用  
  ApplicationContext   ctx=new   FileSystemXmlApplicationContext("bean.xml");  
          HelloBean   hellobean=(HelloBean)ctx.getBean("TheAction");  
          System.out.println(hellobean.getHelloWord()   );Top

15 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-02-08 13:56:58 得分 0

楼上的...  
  怎么扯到hibernate去了...Top

16 楼wafer_w(流浪的风)回复于 2006-02-14 13:43:47 得分 0

说错了,是spring版本问题Top

相关问题

  • Spring中最简单的XmlBeanFactory问题
  • 简单!
  • 简单
  • 简单~~~
  • 简单
  • 简单!
  • 简单
  • 简单
  • 简单……
  • 简单问题不简单!

关键词

  • 函数
  • spring
  • 版本
  • hibernate
  • xml
  • xmlbeanfactory
  • hellobean
  • inputstream
  • 构造函数
  • classpathresource

得分解答快速导航

  • 帖主:Pt_Coffee

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo