如何在 AspectJ 中提供动态切入点?
How to provide dynamic pointcut in AspectJ?
我正在尝试构建一个自定义性能测量库,用户可以使用它来测量应用程序中任何方法的性能。我的目标是在不改变用户应用程序现有 Java 代码的情况下实现这件事。
库将使用 MethodInterceptor
实现作为衡量性能的建议。 用户的唯一输入将是 his/her 选择的切入点表达式,没有别的。并使用提供的切入点表达式,我的库将能够拦截匹配的方法调用以衡量性能。
简而言之,用户只会在 spring xml:
中进行如下配置
<bean id="configBean" class="com.something.PointCutConfigBean">
<property name="patterns">
<list>
<value>"execution(* com.company.CustomerDao.addCustomer(..))"</value>
</list>
</property>
</bean>
我的问题是如何在我的图书馆中实现这一点?如何实现 PointCutConfigBean
class?我可以使用 spring 2 和 aspectj.
我知道,如果用户只是写一个普通的 <aop:config
并使用我的建议,同样的事情也可以实现。但如果可能的话,我只是在寻找更酷的东西。
这是个好问题!
你为什么不创建一个注解,如果需要的话,用于标记方法或字段,并编写一个可以获得注解的切面。 Class.getAnnotations(),如果您的注释存在,您 运行 您的代码 ?
在审查了可能的方法之后,我认为@M.Deinum 的评论对我的决定最有价值。最后,我决定只使用 <aop:advisor advice-ref="..." pointcut="execution(..
路线。
如果大家有其他看法,欢迎分享。
我正在尝试构建一个自定义性能测量库,用户可以使用它来测量应用程序中任何方法的性能。我的目标是在不改变用户应用程序现有 Java 代码的情况下实现这件事。
库将使用 MethodInterceptor
实现作为衡量性能的建议。 用户的唯一输入将是 his/her 选择的切入点表达式,没有别的。并使用提供的切入点表达式,我的库将能够拦截匹配的方法调用以衡量性能。
简而言之,用户只会在 spring xml:
中进行如下配置<bean id="configBean" class="com.something.PointCutConfigBean">
<property name="patterns">
<list>
<value>"execution(* com.company.CustomerDao.addCustomer(..))"</value>
</list>
</property>
</bean>
我的问题是如何在我的图书馆中实现这一点?如何实现 PointCutConfigBean
class?我可以使用 spring 2 和 aspectj.
我知道,如果用户只是写一个普通的 <aop:config
并使用我的建议,同样的事情也可以实现。但如果可能的话,我只是在寻找更酷的东西。
这是个好问题!
你为什么不创建一个注解,如果需要的话,用于标记方法或字段,并编写一个可以获得注解的切面。 Class.getAnnotations(),如果您的注释存在,您 运行 您的代码 ?
在审查了可能的方法之后,我认为@M.Deinum 的评论对我的决定最有价值。最后,我决定只使用 <aop:advisor advice-ref="..." pointcut="execution(..
路线。
如果大家有其他看法,欢迎分享。