




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第解決spring懶加載以及@PostConstruct結合的坑目錄spring懶加載及@PostConstruct的坑下面是一個初始化數據的組件遺留問題@PostConstruct注入不成功直接先說原因吧1.忽略ssm本身對注解是通過掃包才讓注解有效的2.忽略@Service的注解3.注意掃包區間4.@PostCoustruct注解用于
spring懶加載及@PostConstruct的坑
舉例說明:
下面是一個初始化數據的組件
@Component
publicclassInitData{
*初始化加載bean
@PostConstruct
publicvoidinit(){
MapString,Stringmap=newHashMapString,String
for(inti=0;ii++){
map.put(i+"",i+"");
//模擬加載一些別單例模式bean的數據初始化
ErrorMsgUtil1.getInstance().setMap(map);
ErrorMsgUtil2.getInstance().setMap(map);
好了,如果你開啟了spring的懶加載模式,而且InitData這個bean只是被掃描而沒有被注入,那么ErrorMsgUtil里的map永遠是空的。
@PostConstruct實在bean初始化的時候被創建的,開啟了懶加載顯然如果InitData沒有被用到那么就一直不執行了。
此坑已踩,小弟還是對spring理解不深,繼續學習。
ps:如何開啟spring的懶加載模式,在spring.xml中加上下面的代碼中最后一句即可
xmlversion="1.0"encoding="UTF-8"
beansxmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"
xmlns:context="/schema/context"
xmlns:mvc="/schema/mvc"xmlns:tx="/schema/tx"
xsi:schemaLocation="
/schema/beans
/schema/beans/spring-beans-3.0.xsd
/schema/context
/schema/context/spring-context-3.0.xsd
"default-lazy-init="true"
遺留問題@PostConstruct注入不成功
前兩天做了個純java代碼的rabbitMQ監聽多個ip的客戶端功能,由于用的不是配置方式的listener方式—博文中有這一節,無法自動啟動。就用@PostConstruct來項目啟動時運行監聽mq,但是老遇到調用業務邏輯層方法時,注入不成功導致空指針異常。今天排查了一下,發現主要問題是框架掃包忽略了。
直接先說原因吧
1.忽略ssm本身對注解是通過掃包才讓注解有效的
!--自動掃描該包,支持注解的層限制,把api這個controller層排除在外了。另外多個包中間用逗號或者分號隔開都可以。--
context:component-scanbase-package="com.**.service,com.**.action,com.**.common"
context:include-filtertype="annotation"expression="org.springframework.stereotype.Controller"/
context:exclude-filtertype="annotation"expression="org.springframework.stereotype.api"/
/context:component-scan
2.忽略@Service的注解
由于掃包是掃service層和action層(相當于service層),common工具層。所以在api層(相當于controller層)用@Service和不用注解都是錯誤的,都會導致注入失敗。
3.注意掃包區間
出了這個范圍@PostConstruct是無效的。應用在啟動時是不會走帶有這個注解的方法的。
4.@PostCoustruct注解用于
在依賴關系注入完成之后需要執行的方法上,以執行任何初始化。此方法所在的類必須放入服務之前調用。也就是該注解的類上不能隨便注解:經驗總結是能用@Service注解,不能用@Controller注解,否則啟動不會走這個方法。這個類定位為服務層/業務層。而不是控制層(web層)
有了上面說的注意點。我重新在工具類包common包中寫了個測試類。然后spring配置文件上掃包范圍增加了這個common包。代碼如下:mon.cache.CommonCacheMap.java
packagemon.cache;
importjavax.annotation.PostConstruct;
importjavax.annotation.Resource;
importorg.springframework.stereotype.Service;
importcom.zlf.bo.StaffBo;
importcom.zlf.service.IStaffService;
@Service("CommonCacheMap")
publicclassCommonCacheMap{
@Resource
privateIStaffServicestaffService;
@PostConstruct
publicvoidgetOneStaff(){
StaffBostaffBo=staffService.selectByPrimaryKey(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式技術在醫療行業的應用試題及答案
- 數據庫管理中的挑戰與機遇試題及答案
- 稀有稀土金屬加工前沿技術探討考核試卷
- 風險控制在嵌入式項目中的應用試題及答案
- 嵌入式產品交付策略試題及答案
- 公路管理體系與規范試題及答案
- 全面修訂安全管理制度
- 工地排水配件管理制度
- 實戰模擬計算機三級數據庫試題及答案
- 公司保溫車間管理制度
- 理論聯系實際談一談你對高質量發展的理解參考答案二
- 浙江省金華市東陽市2025年七年級下學期期末數學試題及答案
- 江西省煙草專賣局(公司)筆試試題2024
- 期末復習題(試題)2024-2025學年六年級下冊數學人教版
- 多彩的非洲文化 - 人教版課件
- 2023年廣州中考政治試題及答案
- 醫院檢驗科實驗室生物安全程序文件SOP
- 閥門系數Cv和KV值計算表格(帶公式)
- 導流明渠施工方案(共4頁)
- 小學美術三年級下冊第5課我們班級的標志PPT課件
- 兒童社會工作案例及分析PPT學習教案
評論
0/150
提交評論