|
1.問題描述 在Idea的spring工程里,經常會遇到Could not autowire. No beans of 'xxxx’ type found的錯誤提示。但程序的編譯和運行都是沒有問題的,這個錯誤提示并不會產生影響。但紅色的錯誤提示在有些有強迫癥的程序員眼里,多多少少有些不太舒服。  2. 原因 原因可能有兩個,第一個是IntellijIDEA本身工具的問題。第二個便是我們導入@Service包的時候導入包錯誤造成的 第一種原因,spring auto scan配置,在編輯情況下,無法找不到對應的bean,于是提示找不到對應bean的錯誤。常見于mybatis的mapper,如下:  3. 解決方案 針對第一種原因,解決辦法是:降低Autowired檢測的級別,將Severity的級別由之前的error改成warning或其它可以忽略的級別。  針對第二種原因,解決方案當然是導入正確的包。首先我們來看下最容易導入的錯誤包,如下所示: import com.alibaba.dubbo.config.annotation.Service; 正確的包應該是下面這個 import org.springframework.stereotype.Service; 切記切記?。。。。?br> 針對第三種原因,換成@Resource就可以了,不知道為啥  spring中注解@Resource 與@Autowire 區(qū)別 @Resource與@Autowired的區(qū)別? 1.@Autowired按byType自動注入。
2.@Resource默認按byName自動注入。
但是@Resource有兩個屬性是比較重要的,分是name和type;
如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略;
3.@Autowired是spring自己定義的注解,@Resource是J2EE的,由JSR-250規(guī)范定義。
PS:個人建議用@Resource,不為什么,減少與spring的耦合。
|