我在应用程序xml中具有此配置
<aop:config>
<aop:aspect id="ruleAspect" ref="ruleInterceptor">
<aop:pointcut expression="@within(....)" id="servicePointcut" />
<aop:around pointcut-ref="servicePointcut" method="intercept"/>
</aop:aspect>
</aop:config>
如果用户触发了与我的规则相关的任何操作,则该代码将运行
public Object intercept(ProceedingJoinPoint pjp) throws Throwable {
...
...
for (Rule rule :ruleList) {
rule.doApply(pjp);
}
}
和此代码调用规则类doApply方法
public class Rule1 {
@Override
protected Object doApply(ProceedingJoinPoint invocation) {
...
...
}
}
现在,我的问题是如何使用pjp参数手动触发另一个类的doApply方法。我不创建pjp对象,因为它是接口。反正有吗?
答案 0 :(得分:0)
我不认为这是您应该考虑的方面。它们在运行时被调用,并不意味着可以手动调用。
最好甚至根本不将方面视为类和方法。
我要采取的“变通办法”是将Aspect方法中的相关逻辑放入静态助手类方法中,然后可以在aop和手动调用之间共享