我的项目使用的是Spring Web Flow 2.4,我需要使用Spring AOP来指导流程作用域bean来处理像日志记录这样的方面要求。 这里是方面类:如何在Spring Webflow中建议flowcope bean
@Aspect
@Component
public class LogFlowEventExecutor {
@Pointcut("execution(public * com.xyz.app.flow.*FlowBean.*(..))")
private void flowFunction() {}
@Before("flowOperation()")
public void logFlowEvent(JoinPoint jp) throws Throwable {
//logic ignored
...
}
}
,并限定了根WebApplicationContext自动代理:
<aop:aspectj-autoproxy />
而且每个单独的文件-flow.xml
<flow xmlns="http://www.springframework.org/schema/webflow"...>
<var name="abcFlowBean" class="com.xyz.app.flow.AbcFlowBean" />
...
</flow>
我使用的相同的模式,以轻松建议服务bean和控制器,但它不适用于流程范围的bean,该方面从未执行。 我认为它可能是JDK动态接口代理的东西,但是它也失败了CGLIB(proxy-target-class =“true”属性被设置)。切入点从未被拦截。所以我怀疑流程范围bean在实例化时从未正确代理过。
我试着切换到LTW,但它抛出了一个NoSuchMethodError(这个bean是由weaveinfo日志编织而成的)。也许最好为此单独打开另一个线程。
我的问题是,是否可以使用Spring AOP来建议一个流作用域bean,以及如何做到这一点?