如何编写不需要AspectJWeaver的切入点表达式

时间:2014-02-04 12:07:54

标签: java spring maven aspectj spring-aop

使用以下配置使用Spring AOP进行事务管理的标准示例:

                                                

<aop:config>
    <aop:pointcut id="myaop" expression="execution(* my.package.*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myaop" />
</aop:config>

但是,这需要AspectJWeaver.jar在类路径上。是否可以在不需要这种依赖的情况下编写此切入点?我知道Spring AOP依赖于AspectJWeaver中的一些类,没有实际使用加载时编织,但是我们可以使用Spring AOP而不需要这个jar吗?除非您使用特定的AspectJ注释,否则文档不会说明jar是必需依赖项的任何位置。 Spring AOP的POM文件将其列为可选依赖项。

1 个答案:

答案 0 :(得分:2)

本质上很简单,不要编写AspectJ切入点。这基本上归结为不再使用pointcut标签,而是在应用程序上下文中注册非aspectj切入点。

您可以创建JdkRegexpMethodPointcut的实例并将其链接到您的注册顾问。

<bean id="myaop" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
    <property name="pattern" value=".*get.*" />
</bean>

但是我强烈建议继续使用AspectJ支持,它比旧的实现更强大,更容易使用。它使用的aspectj类用于解析切入点并理解AspectJ语言。