我在普通類的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
開機 閱讀(355)
評論(0) 編輯 收藏 所屬分類:
spring