【发布时间】:2015-09-21 15:09:17
【问题描述】:
我正在尝试构建一个自定义性能测量库,用户可以使用它来测量应用程序中任何方法的性能。我的目标是在不改变用户应用程序现有 Java 代码的情况下实现这件事。
库将使用MethodInterceptor 实现作为衡量性能的建议。 用户的唯一输入将是他/她选择的切入点表达式,没有别的。并且使用提供的切入点表达式,我的库将能够拦截匹配的方法调用来衡量性能。
简而言之,用户只会在 spring xml 中进行如下配置:
<bean id="configBean" class="com.something.PointCutConfigBean">
<property name="patterns">
<list>
<value>"execution(* com.company.CustomerDao.addCustomer(..))"</value>
</list>
</property>
</bean>
我的问题是如何在我的库中实现这一点?如何实现PointCutConfigBean 类?我可以使用 spring 2 和 aspectj。
我知道,如果用户只写一个普通的<aop:config 并使用我的建议,同样的事情也可以实现。但如果可能的话,我只是在寻找更酷的东西。
【问题讨论】:
-
我看看我前段时间问的this问题,你可能会发现它很有用...
-
@XtremeBiker 谢谢。这很好,但我想提供多个切入点表达式作为列表属性而不是注释。这就是动态需求出现的地方,因此也是挑战:)
-
你试过
aop:pointcut符号吗?它应该做你想做的...... -
@XtremeBiker
aop:config,aop:pointcut是我知道的常用方式。正如我在问题中提到的,我正在寻找一种替代方式,为用户减少配置开销。 -
如果它是一个常规方面,它应该是不可知的。对于没有弹簧的使用,您将/可以在
aop.xml中指定由 AspectJ 指定的表达式。尝试将它与 spring 集成也可能很困难,如果你做错了,甚至会破坏正常运行的软件,因为当做错时很容易触发围绕代理创建代理。