spring中基于XML的AOP配置步骤
1. 把通知类Bean也交给spring来管理
2. 使用aop:config表明开始aop配置
3. 使用aop:aspect标签表明配置切面
id属性:给切面提供一个唯一标识
ref属性:指定通知类bean的ID
4. 在aop:aspect标签的内部使用对应的标签来配置通知类型
我们现在示例是让printLog方法在切入点方法执行之前通知:所以是前置通知
aop:before:标识前置通知
method:属性:用于指定Logger类中哪个方法是前置通知
pointcut属性:用于指定切入点表达式,该表达式的含义指的是对业务层中那些方法增强
切入点表达式的写法:
关键字:execution(表达式)
表达式:
访问修饰符 返回值 包名.包名.包名...类名.方法名(参数列表)
标准的表达式写法:
public void com.example.service.impl.AccountServiceImpl.saveAccount()
全统配写法:
* *..*.*(..)
访问修饰符可以省略
void com.example.service.impl.AccountServiceImpl.saveAccount()
返回值可以使用通配符
* com.example.service.impl.AccountServiceImpl.saveAccount()
包名可以使用通配符
* *.*.*.*.AccountServiceImpl.saveAccount()
当前包及其子包 ..
* *..AccountServiceImpl.saveAccount()
类名和方法名可以使用通配符
* *..*.*()
参数列表:
基本类型直接写: int
应用类型写全限定类型:java.lang.String
* *..*.*(int)
可以使用*标识任意类型
* *..*.*(*)
可以使用..标识有无参数都行
* *..*.*(..)
实际项目中的写法:
* com.example.service.impl.*.*(..)