随笔-26  评论-44  文章-20  trackbacks-0
我在普通类的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 开机 阅读(344) 评论(0)  编辑  收藏 所属分类: spring

只有注册用户登录后才能发表评论。


网站导航: