為什么dao/mapper層介面不寫注解@Repository也能被實體化為bean?
因為在spring整合mybatis的時候,在spring的核心組態檔applicationContext.xml中,配置了MapperScannerConfigurer,
`MapperScannerConfigurer`的作用就是讓它掃描指定的包,然后由容器自動批量地創建映射器,減少代碼(就不需要在dao/mappper介面上加注解@Repository了)
<!-- 配置映射檔案掃描器 : IPersonDao.xml和IPersonDao.java-->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 掃描dao介面和映射xml編譯后的類路徑 -->
<property name="basePackage" value="com.xgf.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
idea總時報錯Could not autowire. No beans of ‘XxxDao’ type found.
錯誤就是下圖這樣的

報錯Could not autowire. No beans of 'IUserDao' type found,不能自動裝載,dao的bean實體沒有找到,
可能原因
原因1. 沒有在dao上加注解@Repository(只要加上注解就行)
原因2. 程式可以運行,且運行正常,編譯的時候通過@Repository自動裝載進行的時候會有波浪線錯誤提示(這里的錯誤提示對于程式執行沒有任何影響),這個原因可能是idea自身的問題,
解決方案
第二種原因的解決辦法
降低Autowired檢測的級別,將Severity的級別由之前的Error改成Warning或其它可以忽略的級別就可以解決問題了
Settings -> Editor -> Inspections -> Spring -> Spring Core -> Code -> Autowiring for bean class -> Severity -> 將Error級別改為Warning級別,然后點擊右下角的Apply應用就可以了,
解決成功,不再出現波浪線的錯誤提示了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206170.html
標籤:其他
上一篇:Java基礎面試寶典

