【发布时间】:2014-12-11 11:50:49
【问题描述】:
我正在攻读Spring Core认证,对AOP有以下疑问命名切入点
例如,我可以将以下代码放入 XML 配置文件中,该文件使用 no name 定义 pointut:
<aop:config>
<aop:aspect ref=“propertyChangeTracker”>
<aop:before pointcut=“execution(void set*(*))” method=“trackChange”/>
</aop:aspect>
</aop:config>
<bean id=“propertyChangeTracker” class=“example.PropertyChangeTracker” />
这应该通过以下方式工作:
首先,它将切入点定义为所有名称以set开头的方法,并采用单个参数(任何类型)返回void。
并且将advice定义为example.PropertyChangeTracker
类中的trackChange()方法所以发生的情况是,当在应用程序生命周期中调用 setter 方法时,它会自动调用类 example.PropertyChangeTracker 中的 trackChange() 方法。
好的,这很简单。
现在我有了这个包含命名切入点的 AOP XML 配置:
<aop:config>
<aop:pointcut id=“setterMethods” expression=“execution(void set*(*))”/>
<aop:aspect ref=“propertyChangeTracker”>
<aop:after-returning pointcut-ref=“setterMethods” method=“trackChange”/>
<aop:after-throwing pointcut-ref=“setterMethods” method=“logFailure”/>
</aop:aspect>
</aop:config>
<bean id=“propertyChangeTracker” class=“example.PropertyChangeTracker” />
在第一个配置中,切入点仍然与一些特定的设置方法相关(但在这种情况下,建议分别是 after-returning 和 after-throw 。
定义的advices是example.PropertyChangeTracker中定义的trackChange()和logFailure()方法强>类。
与第一个示例不同,这 2 个建议定义了一个名称,该名称由 pointcut-ref=“setterMethods” 的值表示。但究竟意味着什么?可以用来做什么?
Tnx
【问题讨论】:
标签: java spring spring-mvc aop spring-aop