声明一个 Aspect

启用 @AspectJ 支持后,在应用程序上下文中定义的任何 bean 都会显示 类@AspectJ(具有@Aspectannotation) 会自动 由 Spring 检测到,并用于配置 Spring AOP。接下来的两个示例显示了 对于不太有用的方面所需的最少步骤。spring-doc.cadn.net.cn

两个示例中的第一个示例显示了应用程序上下文中的常规 bean 定义 这指向一个 Bean 类,该类用@Aspect:spring-doc.cadn.net.cn

public class ApplicationConfiguration {

	@Bean
	public NotVeryUsefulAspect myAspect() {
		NotVeryUsefulAspect myAspect = new NotVeryUsefulAspect();
		// Configure properties of the aspect here
		return myAspect;
	}
}
class ApplicationConfiguration {

	@Bean
	fun myAspect() = NotVeryUsefulAspect().apply {
		// Configure properties of the aspect here
	}
}
<bean id="myAspect" class="org.springframework.docs.core.aop.ataspectj.aopataspectj.NotVeryUsefulAspect">
	<!-- configure properties of the aspect here -->
</bean>

两个示例中的第二个示例显示了NotVeryUsefulAspect类定义,即 注解@Aspect:spring-doc.cadn.net.cn

@Aspect
public class NotVeryUsefulAspect {
}
@Aspect
class NotVeryUsefulAspect

Aspects(用@Aspect) 可以具有方法和字段,与任何 其他类。它们还可以包含切入点、建议和引言(类型间) 声明。spring-doc.cadn.net.cn

通过组件扫描自动检测各个方面
你可以在 Spring XML 配置中将 aspect 类注册为常规 bean, 通过@Beanmethods 中的@Configuration类,或者让 Spring 通过 classpath scanning — 与任何其他 Spring 管理的 bean 相同。但是,请注意,@Aspect注解不足以在 Classpath 中进行自动检测。为此 目的,您需要添加一个单独的@Component注解(或者,自定义 stereotype 注解,根据 Spring 的组件扫描器的规则)。
用其他方面提供建议?
在 Spring AOP 中,方面本身不能成为其他 方面。这@Aspect类的注解将其标记为 Aspect,因此会排除 它来自自动代理。