声明切面
启用 @AspectJ 支持后,应用程序上下文中定义的任何 bean(其类是 @AspectJ 方面(具有 @Aspect
注解))都会由 Spring 自动检测,并用于配置 Spring AOP。接下来的两个示例展示了对一个不太有用的方面所需的最少步骤。
这两个示例中的第一个展示了应用程序上下文中指向用 @Aspect
注解的 bean 类的常规 bean 定义
<bean id="myAspect" class="com.xyz.NotVeryUsefulAspect">
<!-- configure properties of the aspect here -->
</bean>
这两个示例中的第二个展示了用 @Aspect
注解的 NotVeryUsefulAspect
类定义
-
Java
-
Kotlin
package com.xyz;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class NotVeryUsefulAspect {
}
package com.xyz
import org.aspectj.lang.annotation.Aspect
@Aspect
class NotVeryUsefulAspect
方面(用 @Aspect
注解的类)可以有方法和字段,与任何其他类相同。它们还可以包含切入点、建议和引入(类型间)声明。
通过组件扫描自动检测方面
可以通过 @Configuration 类中的 @Bean 方法在 Spring XML 配置中将方面类注册为常规 bean,或让 Spring 通过类路径扫描自动检测它们,与任何其他 Spring 管理的 bean 相同。但是,请注意,@Aspect 注解不足以在类路径中进行自动检测。为此,您需要添加一个单独的 @Component 注解(或者,作为替代,添加一个自定义的构造型注解,该注解符合 Spring 组件扫描器的规则)。
|
用其他方面建议方面?
在 Spring AOP 中,切面本身不能成为其他切面的通知目标。类上的 @Aspect 注解将其标记为切面,因此将其排除在自动代理之外。
|