- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习Spring Core认证,对AOP命名切入点有以下疑问
例如,我可以将以下代码放入 XML 配置文件中,该文件定义了无名称的 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” />
与第一个配置一样,切入点仍然与某些特定的setter方法相关(但在这种情况下,建议分别是返回后和抛出后。
定义的建议是example.PropertyChangeTracker中定义的trackChange()和logFailure()方法强>类。
与第一个示例不同,这两个建议定义了一个由 pointcut-ref=“setterMethods” 的值表示的名称。但到底是什么意思呢?可以用来做什么?
Tnx
最佳答案
问题很长,答案很简单:您可以通过名称引用切入点,因此,如果您有多个引用同一切入点的建议,则只需在一处更改它并保持引用不变。这类似于在 Java 代码中使用变量与文字。
看看你自己的例子:两个通知trackChange
和logFailure
都使用相同的切入点,这相当方便。 DRY——不要重复自己。 ;-) 有时切入点比你的更复杂一点,它们在复杂的场景中可以跨越多行。
关于java - Spring AOP 命名切入点到底是如何工作的?有何用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422220/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!