zoukankan      html  css  js  c++  java
  • springboot Autowired BeanNotOfRequiredTypeException

    现象

    org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'xxxxImpl' is expected to be of type 'com.xxx.xxxImpl' but was actually of type 'com.sun.proxy.$Proxy62'

    直接Autowired一个实现类,而不是接口

    @Autowired
    private XxxServiceImpl xxxService;

    解决方案

      1.  Autowired接口

      2.  使用EnableAspectJAutoProxy

    SpringBootApplication
    @EnableAspectJAutoProxy(proxyTargetClass = true)
    public class Application {
        public static void main(String[] args) {
            SpringApplication app = new SpringApplication(Application.class);
            app.run(args);
        }
    }

      设置proxy-target-class为true即使用cglib的方式代理对象,默认是jdk方式代理。

      jdk的动态代理不支持类注入,只支持接口方式注入。

    动态代理类型判断

    //org.springframework.aop.framework.DefaultAopProxyFactory     
      
    //参数AdvisedSupport 是Spring AOP配置相关类     
      
    public AopProxy createAopProxy(AdvisedSupport advisedSupport)     
      
            throws AopConfigException {     
      
        //在此判断使用JDK动态代理还是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);     
      
        }     
      
    }  
  • 相关阅读:
    快速生成树协议 RSTP
    VLAN间路由
    二层交换机原理
    网络安全系统之四 PKI体系
    网络安全系统之三 数字证书
    生成树协议 STP
    网络安全系统之二 数字签名
    网络安全系统之一 加密算法
    系统可靠性
    DNS资源记录
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/8428422.html
Copyright © 2011-2022 走看看