具有查找方法

时间:2016-11-14 09:21:52

标签: java spring proxy spring-aop spring-bean

我有一个春豆 - > lookupMethodBean(singleton)具有注入原型bean的查找方法。我现在已经指定了一个切入点表达式来捕获lookupMethodBean的方法执行时间。还有另一个豆 - > impactedBean,它将lookupMethodBean作为构造函数参数传递。

启动时,bean初始化(impactedBean)失败,并显示以下错误:

' org.springframework.scheduling.support.ScheduledMethodRunnable#3':无法解析对bean' impactedBean'的引用设置构造函数参数时;嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为' impactedBean'的bean时出错在类路径资源[beanDefinitions.xml]中定义:通过类型为[com.xyz.LookupMethodBeanClass]的索引0的构造函数参数表示的不满意的依赖:无法将类型为[com.sun.proxy。$ Proxy94]的构造函数参数值转换为必需type [com.xyz.LookupMethodBeanClass]:无法转换类型' com.sun.proxy。$ Proxy94的值,实现net.sf.cglib.proxy.Factory,org.springframework.aop.SpringProxy,org.springframework。 aop.framework.Advised'要求的类型' com.xyz.LookupMethodBeanClass&#39 ;;嵌套异常是java.lang.IllegalStateException:无法转换类型[com.sun.proxy。$ Proxy94实现net.sf.cglib.proxy.Factory,org.springframework.aop.SpringProxy,org.springframework.aop.framework。建议]到必需的类型[com.xyz.LookupMethodBeanClass]:在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329)找不到匹配的编辑器或转换策略

bean定义如下:

<bean id="lookupMethodBean" class="com.xyz.LookupMethodBeanClass">
    <lookup-method name="lookupPrototype" bean="prototypeBean" />
</bean>
<bean id="impactedBean" class="com.xyz.ImpactedBeanClass">  
    <constructor-arg index ="0" ref="lookupMethodBean"/>
</bean>

切入点表达式如下: execution(* com.xyz.LookupMethodBeanClass.execute(..))

如果我将切入点表达式更新为指向其他类,则应用程序上下文会被正确初始化。由于LookupMethodBeanClass是一个具体的类而没有任何接口,因此创建了一个CGLib代理来处理查找逻辑。对于AOP切入点表达式,似乎正在创建一个JDK代理,并且它们似乎不会凝聚在一起并导致此问题。

请告知如何解决此问题。

0 个答案:

没有答案