您的位置:首页 > 移动开发 > Objective-C

spring同时使用aop和spel表达式出错:Property or field 'instrument' cannot be found on object of type 'com.sun.pr

2016-08-10 12:18 1686 查看

错误信息:

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 6): Property or field 'instrument' cannot be found on object of type 'com.sun.proxy.$Proxy2' - maybe not public?

at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:224)

at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94)

at org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:46)

at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:374)

at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:88)

at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120)

at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:242)

at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161)

... 23 more


由于aop是默认创建的代理是基于接口的,不能访问类的方法。performer接口中只有一个perform方法,所以会报错:

Property or field 'instrument' cannot be found on object of type 'com.sun.proxy.$Proxy2' -


解决此问题,只需要在aop:config中加上
proxy-target-class="true"
就行了

<aop:config proxy-target-class="true">
<aop:aspect ref="log">
<aop:pointcut id="perform" expression="execution(* algo.study.spring.xmlbean.Performer.perform(..))" />
<aop:before pointcut-ref="perform" method="start" />
<aop:after pointcut-ref="perform" method="end" />
</aop:aspect>
</aop:config>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring aop
相关文章推荐