不知道大家的專案中有沒有遇見過這種情況。
專案中總共有a.b.c三個module。a有三個spring配置檔案,分別叫做bean.xml,service.xml,db.xml。然後b有兩個配置檔案,分別叫做service.xml,bean.xml。然後啟動專案,spring載入時卻發現本在a的service.xml中定義的servicefora死活例項化不了。而且即使你把servicefora的配置刪掉,並且把專案中引用到的地方全部刪掉,又會發現spring報service.xml中有別的bean無法例項化。
最近我就遇見了這種近乎無解的問題。最後發現引起這種問題可能的原因是,spring為a例項化bean,事實上卻沒有載入a下面的service.xml,而是載入了b下面的service.xml!!!!我當時解壓了專案a打成的jar包,發現a專案下的service.xml檔案內容與ide裡的內容完全不一樣,反而是和b的service.xml長得一樣。
深層次分析原因,發現a專案的pom.xml中新增了對b專案的依賴,所以可能spring在載入配置檔案的時候,因為對b有依賴,所以決定先去例項化b的bean,先讀取到了b專案下面的service.xml檔案,然後放到了a的配置檔案集合(這是我自己yy的乙個概念)中,等讀到a專案下的service.xml後,發現已經存在乙個名為service.xml的檔案,於是不再載入a下面本來的service.xml。於是導致了這個坑了我三天的問題。
解決方案很簡單,就是把a專案的service.xml給改個名字,改成serice-a.xml後,重新打包,再去解壓jar包,發現config/spring/下果然多了個service-a.xml,諷刺的是service.xml依然安安靜靜地躺在那。╮(╯▽╰)╭
總之,得到的教訓是盡量不要起重複名字的配置檔案,即使這兩個檔案放在不同的module中!
Java配置檔案Unicode編碼可能引發的bug
發現bug 在伺服器上部署後台服務並驗證能夠正常執行,但是一次修改配置重啟後突然出現了乙個空指標bug,部署的程式並沒有改變 2.定位bug 空指標定位到乙個變數,查詢 發現變數初始化來自於讀取配置檔案,但是檢查配置檔案中有正常配置相應值,所以無法找到原因。後來在開發機器上除錯服務都沒有問題,只好重...
spring配置檔案
1 配置檔案的簡化 1 屬性的 property name foo value foovalue value property 簡化為 property name foo value foovalue 2 引用bean property name foo ref bean foobean prope...
spring配置檔案
context annotation config 是用於啟用那些已經在spring容器裡註冊過的bean上面的註解,也就是顯示的向spring註冊 autowiredannotationbeanpostprocessor commonannotationbeanpostprocessor pers...