对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

声明切面

启用@AspectJ支持后,Spring会自动检测应用程序上下文中定义的任何带有@AspectJ切面类(包含@Aspect注解)的bean,并将其用于配置Spring AOP。以下两个示例展示了构建一个不太实用的切面所需的最简步骤。spring-doc.cadn.net.cn

第一个示例展示了在应用上下文中的一个常规bean定义 它指向一个使用@Aspect标注的bean类:spring-doc.cadn.net.cn

<bean id="myAspect" class="com.xyz.NotVeryUsefulAspect">
	<!-- configure properties of the aspect here -->
</bean>

第二个示例展示了 NotVeryUsefulAspect 类定义,该类 带有 @Aspect 注解:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

通过组件扫描自动检测切面
你可以通过 Spring XML 配置将切面类注册为常规 bean,通过@Bean方法 in@Configuration类,或者让 Spring 通过类路径扫描自动检测它们 — 与任何其他 Spring 管理的 bean 相同。但是请注意,这@Aspect注解在类路径中不足以进行自动检测。为此,你需要添加一个单独的@Component注解 (或者,作为Spring组件扫描器规则的替代,一个自定义的构造型注解)
与其他方面进行建议?
在 Spring AOP 中,切面本身不能成为其他切面的建议目标。 The@Aspect类上的注解将其标记为切面,因此会将其排除在自动代理之外。