最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中BeanNotOfRequiredTypeException的問(wèn)題解決(@Autowired和@Resource注解的不同)

 更新時(shí)間:2023年07月18日 10:19:01   作者:自知自省  
本文主要介紹了java中BeanNotOfRequiredTypeException的問(wèn)題解決(@Autowired和@Resource注解的不同),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 錯(cuò)誤信息

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named ‘aisleService’ must be of type [com.gdie.whlocation.service.impl.AisleService], but was actually of type [$Proxy38]

2. 問(wèn)題原因

一般在使用annotation的方式注入spring的bean 出現(xiàn)的,具體是由于spring采用代理的機(jī)制導(dǎo)致的,看使用的代碼:

3. @Autowired和@Resource注解的區(qū)別

1. 使用類注入:  

@Resource(name = "aisleService")  
private AisleService aisleService;  

2. 使用接口注入:  

@Resource(name = "aisleService")  
private IAisleService aisleService;  

代碼1不能使用JDK的動(dòng)態(tài)代理注入,原因是JDK的動(dòng)態(tài)代理不支持類注入,只支持接口方式注入;

代碼2可以使用JDK動(dòng)態(tài)代理注入;

如果要使用代碼1的方式,必須使用cglib代理;當(dāng)然了推薦使用代碼2的方式,基于接口編程的方式!

使用1的方式也是可以的,建議試一下@Autowired這個(gè)注解:

  • @Autowired這個(gè)注解和@Resource注解不同的是方法類型不同;
  • @Autowired是按類的類型注入的 ,是不用區(qū)分注入名字的;
  • @Resource是按照類的名字注入的,區(qū)分注入名字的大小寫(xiě)的寫(xiě)錯(cuò)了也會(huì)報(bào)BeanNotOfRequiredTypeException異常;

4. 關(guān)于spring動(dòng)態(tài)代理的配置:

1.使用aop配置:   

<aop:config proxy-target-class="false"> </aop:config>   

2. aspectj配置:   

<aop:aspectj-autoproxy proxy-target-class="true"/>  

3. 事務(wù)annotation配置:   

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>  

3種配置,只要使用一種即可,設(shè)置proxy-target-class為true即使用cglib的方式代理對(duì)象。

附:spring的aop代理判斷邏輯:

//org.springframework.aop.framework.DefaultAopProxyFactory     
//參數(shù)AdvisedSupport 是Spring AOP配置相關(guān)類     
public AopProxy createAopProxy(AdvisedSupport advisedSupport)     
        throws AopConfigException {     
    //在此判斷使用JDK動(dòng)態(tài)代理還是CGLIB代理     
    if (advisedSupport.isOptimize() || advisedSupport.isProxyTargetClass()     
            || hasNoUserSuppliedProxyInterfaces(advisedSupport)) {     
        if (!cglibAvailable) {     
            throw new AopConfigException(     
                    "Cannot proxy target class because CGLIB2 is not available. "    
                            + "Add CGLIB to the class path or specify proxy interfaces.");     
        }     
        return CglibProxyFactory.createCglibProxy(advisedSupport);     
    } else {     
        return new JdkDynamicAopProxy(advisedSupport);     
    }     
}  

到此這篇關(guān)于java中BeanNotOfRequiredTypeException的問(wèn)題解決(@Autowired和@Resource注解的不同)的文章就介紹到這了,更多相關(guān)java BeanNotOfRequiredTypeException內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

福建省| 田东县| 平阴县| 北碚区| 东乡县| 泉州市| 延川县| 百色市| 富阳市| 常德市| 吉木萨尔县| 白沙| 青铜峡市| 鄄城县| 贞丰县| 错那县| 通道| 武汉市| 靖边县| 达州市| 泸溪县| 阳山县| 南丹县| 林甸县| 广宁县| 乌兰浩特市| 滁州市| 沂南县| 珠海市| 尼玛县| 泰和县| 海盐县| 调兵山市| 千阳县| 马尔康县| 咸宁市| 松溪县| 黄平县| 南城县| 临澧县| 芦溪县|