8.4.5 基于注解的 零配置 方式 1. 定义切面Bean

8.4.5 基于注解的 零配置 方式 1. 定义切面Bean

当启动了@AspectJ支持后,只要在Spring容器中配置一个带@Aspect注解的Bean,Spring将会自动识别该Bean,并将该Bean作为切面处理。

在Spring容器中配置切面Bean与配置普通Bean一样

Spring容器中配置切面Bean(即带@Aspect注解的Bean)与配置普通Bean没有任何区别,一样使用<bean>元素进行配置,一样支持使用依赖注入来配置属性值;如果启动了Spring的”零配置”特性,一样可以让Spring自动搜索,并加载指定路径下的切面Bean

使用@Aspect标注一个Java类,该Java类将会作为切面Bean,如下面的代码片段所示。

1
2
3
4
5
6
// 使用Aspect定义一个切面类
@Aspect
public class LogAspect
{
//定义该类的其他内容
}

切面类(用@Aspect修饰的类)和其他类一样可以定义方法、定义成员变量,还可能包括切入点、增强处理定义
当使用@Aspect来修饰一个Java类之后, Spring将不会把该Bean当成组件Bean处理,因此负责自动增强的后处理Bean将会略过该Bean,不会对该Bean进行任何增强处理。
开发时无须担心使用@Aspect定义的切面类被增强处理,当Spring容器检测到某个Bean类使用了Aspect修饰之后, Spring容器不会对该Bean类进行增强。