关于XmlBeanFactory的一个简单问题...
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




