spring整合hibernate中的动态代理问题

异常问题
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘purchaseBookImp’: Unsatisfied dependency expressed through field ‘bookImpl’; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named ‘bookImpl’ is expected to be of type ‘com.hbks.spring_hibernate.interfacesImp.BookImpl’ but was actually of type ‘com.sun.proxy.$Proxy38’
当初始化purchaseBookImp类bean时需要用到bookImpl和accountImpl两个bean 但是这两个bean用@autowried注释的化就会出这个异常。
这个问题出现的原因:一般在使用annotation的方式注入spring的bean 出现的,具体是由于spring采用代理的机制导致的,看使用的代码:
spring整合hibernate中的动态代理问题_第1张图片
此 代码不能使用JDK的动态代理注入,原因是jdk的动态代理不支持类注入,只支持接口方式注入;jdk动态代理注入;
如果要使用此代码的方式,必须使用cglib代理;
当然了推荐使用代码2的方式,基于接口编程的方式!

关于spring动态代理的配置:

1.使用aop配置:   
    <aop:config proxy-target-class="false"> aop:config>   
2. aspectj配置:   
    <aop:aspectj-autoproxy proxy-target-class="true"/> 
3. 事务annotation配置:   
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

你可能感兴趣的:(hibernate,spring,exception,hibernate)