我在普通类的main方法中调用bean:
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
for(int i=1;i<5;i++){
DB dbDAO = (DB)factory.getBean("dbDAO");
System.out.println(dbDAO);
}
每次执行程序(不停的调用main方法,不只是只看一次循环!)都是相同的引用:
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9
但是在servlet中使用时:
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
dbDAO = (DB)factory.getBean("dbDAO");
每次操作创建的都是不同的引用:
如com.yijia_ctgu.DB.DB@16e1782
com.yijia_ctgu.DB.DB@19be6ee
为何会是这样,是不是servlet每次都会重新生成spring容器?是servlet获取bean的方式有问题吗?还是servlet根本不可能每次使用相同的bean.
我懂了,必须用别的方式:先在web.xml中定义applicatincontext的位置,再用WebApplicationContextUtils获取ApplicationContext,在用它获取bean,这样就每次就是同样的bean了。
但是错误还是在继续,spring我没系统的学,所以总是有太多的问题。
posted on 2008-11-05 10:34
开机 阅读(345)
评论(0) 编辑 收藏 所属分类:
spring