這是我的初始化Bean工廠.?
ApplicationContext ac=new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml");
applicationContext.xml就放在WEB-INF下。可是系統(tǒng)卻報(bào)錯(cuò)IOException,
系統(tǒng)找不到指定的文件applicationContext.xml,這是為什么??????
已經(jīng)解決
原因很多。我覺得最關(guān)鍵原因是:對(duì)xml配置細(xì)節(jié)不重視;
1.jsp是web工程,這兒應(yīng)該用webApplicationContext加載applicationContext.xml,在加載它的過(guò)程中還有找不到它的時(shí)候,我找了不少文檔,有的說(shuō)應(yīng)該把它放到WEB-INF/classes/下才對(duì),但我實(shí)驗(yàn)時(shí)還是找不到。用了個(gè)笨法,復(fù)制兩份每個(gè)目錄放一個(gè)--解決
2.提示service bean找不到注入的XXTarget bean,應(yīng)該把屬性下的ref 用bean表示,不應(yīng)該用local表示.
3.提示hibernate sql 異常,提示在我們的數(shù)據(jù)庫(kù)里找不到我們的表。再往下看發(fā)現(xiàn)我們的表名都變長(zhǎng)了(仔細(xì)觀察發(fā)現(xiàn)其結(jié)構(gòu)是數(shù)據(jù)庫(kù)名—表名)。這是怎么回事???
經(jīng)過(guò)一番折騰,發(fā)現(xiàn)在hbm.xml里面有一個(gè)可先項(xiàng)catalog="dbname".它是我們?cè)谧雠渲玫臅r(shí)候組件自己加上去的,這樣自動(dòng)自成的表名是對(duì)應(yīng)的標(biāo)準(zhǔn)表名的。但遺憾的是我們通常不按標(biāo)準(zhǔn)給表起名。所以在這兒只能把catalog手動(dòng)的去掉了。
好了。這樣我們就可以在jsp頁(yè)面里得到業(yè)務(wù)層的對(duì)象了,方法是傳統(tǒng)的
wac.getBean("serviceID");