zoukankan      html  css  js  c++  java
  • Bean named 'XXX' is expected to be of type [com.***.XXX] but was actually of type [com.sun.proxy.$Proxy*]

    spring项目

    运行本地testcase,发现无法启动程序,报如下错误:

    java.lang.IllegalStateException: Failed to load ApplicationContext
    
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bossAccAndTransModifyController': Injection of resource dependencies failed; 
    nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: 
    Error creating bean with name 'TPlatOrderServiceImpl': 
    Unsatisfied dependency expressed through field 'tLimitAddService': 
    Bean named 'TLimitAddServiceImpl' is expected to be of type [com.cn.yft.ora.service.impl.TLimitAddServiceImpl] 
    but was actually of type [com.sun.proxy.$Proxy43]; 
    nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: 
    Bean named 'TLimitAddServiceImpl' is expected to be of type [com.cn.yft.ora.service.impl.TLimitAddServiceImpl] 
    but was actually of type [com.sun.proxy.$Proxy43]
    	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    	...

    我们看其中的nest exception信息:

    org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'TLimitAddServiceImpl' is expected to be of type [com.cn.yft.ora.service.impl.TLimitAddServiceImpl] but was actually of type [com.sun.proxy.$Proxy43]

    造成这个错误的原因是方法上使用了spring的声明式事务注解@Transactional。

    需在spring application context.xml文件里指定

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

    xml头部引入

    xmlns:aop="http://www.springframework.org/schema/aop"

    接下再来运行testcase, 发现出现仍然无法启动,出现新的错误:

    java.lang.IllegalStateException: Failed to load ApplicationContext
    
    Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 26 in XML document from class path resource [spring-mvc.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 26; columnNumber: 55; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'aop:aspectj-autoproxy'.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
        ...

    我们看其中的nest exception信息:

    The matching wildcard is strict, but no declaration can be found for element 'aop:aspectj-autoproxy'.

    原因是schemaLocation缺少AOP相关的XSD配置,在XML文件新增AOP配置。


    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd


    接下再来运行testcase, 发现出现仍然无法启动,出现新的错误:

    java.lang.IllegalStateException: Failed to load ApplicationContext
    
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Around
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1105)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        ...

    或者

    java.lang.IllegalStateException: Failed to load ApplicationContext
    	
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bossAccAndTransModifyController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'TAccTransServiceImpl' defined in file [D:***	ax_pay_ext	ax-pay-ext-trans	rans-core	argetclassescomcnyftoraserviceimplTAccTransServiceImpl.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/util/PartialOrder$PartialComparable
    	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    	...

    我们看其中的nest exception信息都是java.lang.NoClassDefFoundError:

    nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Around
    nested exception is java.lang.NoClassDefFoundError: org/aspectj/util/PartialOrder$PartialComparable

    NoClassDefFoundError顾名思义就是缺少相关依赖。除了spring-aop依赖以外,还缺少aspectj的依赖

    	<dependency>
    		<groupId>org.aspectj</groupId>
    		<artifactId>aspectjweaver</artifactId>
    		<version>1.9.4</version>
    	</dependency>

    ref:https://www.cnblogs.com/aeolian/p/11592398.html

  • 相关阅读:
    matlab-vrep程序控制方法
    .ipyb文件怎么转成 .py文件
    python技巧
    gradle初步认识
    StringUtils
    Elasticsearch、Logstash和Kibana ELK
    redisTemplate、jedis、redission的对比
    唯一ID
    spring相关组件简介
    新电脑环境配置
  • 原文地址:https://www.cnblogs.com/buguge/p/14432703.html
Copyright © 2011-2022 走看看