我如何手动触发另一个类的方法周围的操作

时间:2018-08-03 08:21:41

标签: java aop

我在应用程序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对象,因为它是接口。反正有吗?

1 个答案:

答案 0 :(得分:0)

我不认为这是您应该考虑的方面。它们在运行时被调用,并不意味着可以手动调用。

最好甚至根本不将方面视为类和方法。


我要采取的“变通办法”是将Aspect方法中的相关逻辑放入静态助手类方法中,然后可以在aop和手动调用之间共享