我的項目使用的是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,以及如何做到這一點?