Schema–based AOP
- 基于 配置 的AOP的实现
- Spring所有的切面和通知器都必须放在一个
<aop:config>
配置元素内部,可以配置包含多个<aop:config>
元素,每个可以包含pointcut, advisor, aspect元素, 他们必须按顺序声明。 <aop:config>
风格的配置大量使用了Spring的自动代理机制
在AOP中通知Advice 和一个切入点表达式关联
接下来就看一下切入点表达式:
spring的AOP和spring的AspectJ都支持
Spring的AOP又能支持以下部分:
advice
- 通知的设置
- Before advice前置通知
- 例子
- After returning advice
- 例子
- After throwing advice使用throwing属性来指定可被传递的异常的参数名称。
- 例子
- After (finally)advice 方法结束后
- 例子
注意抛出异常和after-returning不会同时存在 - Around advice 通知方法的第一个参数必须是ProceedingJoinPoint类型 ,执行之前,之后都可以用。
- 例子
- Advice parameters:传递参数在环绕通知中使用
- 例子:http://www.imooc.com/video/4422
Introductions :允许一个切面声明一个实现指定接口的通知对象,并提供一个接口实现类来代表这些对象
详情如上地址
注意:基于配置的aspects只支持singleton模式
Advisors 切面通过bean表示,并必须实现某个advice接口,同时,advisor也可以很好的利用AspectJ的切入点表达式
- Spring通过配置文件中
<aop:advisor>
元素支持advisor实际使用,大多数情况下他会和transactional advice配合使用,可以用order属性定义advisor的顺序。 通常用在调用次数的统计和控制的demo
<context:component-scan base-package=”包名”>自动扫描包中的配置