我在普通類(lèi)的main方法中調(diào)用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);
}
每次執(zhí)行程序(不停的調(diào)用main方法,不只是只看一次循環(huán)!)都是相同的引用:
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中使用時(shí):
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
dbDAO = (DB)factory.getBean("dbDAO");
每次操作創(chuàng)建的都是不同的引用:
如com.yijia_ctgu.DB.DB@16e1782
com.yijia_ctgu.DB.DB@19be6ee
為何會(huì)是這樣,是不是servlet每次都會(huì)重新生成spring容器?是servlet獲取bean的方式有問(wèn)題嗎?還是servlet根本不可能每次使用相同的bean.
我懂了,必須用別的方式:先在web.xml中定義applicatincontext的位置,再用WebApplicationContextUtils獲取ApplicationContext,在用它獲取bean,這樣就每次就是同樣的bean了。
但是錯(cuò)誤還是在繼續(xù),spring我沒(méi)系統(tǒng)的學(xué),所以總是有太多的問(wèn)題。
posted on 2008-11-05 10:34
開(kāi)機(jī) 閱讀(354)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
spring