advise java,java – 为静态方法设置AspectJ建议

我用原始的Pointcut和Advise方法编写了简单的Aspect:

@Aspect

public class MyAspect {

@Pointcut("execution(static * com.mtag.util.SomeUtil.someMethod(..))")

public void someMethodInvoke() { }

@AfterReturning(value = "someMethodInvoke())", returning = "comparisonResult")

public void decrementProductCount(List comparisonResult) {

//some actions

}

}

我有以下基于Spring注释的应用程序配置:

@Configuration

@EnableAspectJAutoProxy

public class AppConfig {

//...

}

和com.mtag.util包中的实用程序类:

public class SomeUtil {

static List someMethod(List oldList, List newList) {

//...

}

}

但是当我打电话的时候

SomeUtil.someMethod(arg1, arg2);

在单元测试中我可以看到方法调用没有被截获,我的@AfterReturning建议不起作用.

但是如果我将someMethod()类型更改为实例(非静态)方法,则切入到

@Pointcut("execution(* com.mtag.util.SomeUtil.someMethod(..))")

并通过添加@Component注释来管理SomeUtil bean并调用目标metod,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(classes = {AppConfig.class}, loader = AnnotationConfigContextLoader.class)

public class SomeUtilTest {

@Autowired

private SomeUtil someUtil;

@Test

public void categoriesDiffCalc() {

List result = someUtil.someMethod(...);

}

}

一切都好.

我以什么方式为静态方法设置建议?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值