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