开涛spring3(6.8) - AOP 之 6.8 切面实例化模型
所谓切面实例化模型指何时实例化切面。
Spring AOP支持AspectJ的singleton、perthis、pertarget实例化模型(目前不支持percflow、percflowbelow 和pertypewithin)。
- singleton:即切面只会有一个实例;
- perthis:每个切入点表达式匹配的连接点对应的AOP对象都会创建一个新切面实例;
- pertarget:每个切入点表达式匹配的连接点对应的目标对象都会创建一个新的切面实例;
默认是singleton实例化模型,Schema风格只支持singleton实例化模型,而@AspectJ风格支持这三种实例化模型。
singleton:使用@Aspect()指定,即默认就是单例实例化模式,在此就不演示示例了。
perthis:每个切入点表达式匹配的连接点对应的AOP对象都会创建一个新的切面实例,使用@Aspect("perthis(切入点表达式)")指定切入点表达式;
如 @Aspect("perthis(this(cn.javass.spring.chapter6.service.IIntroductionService))") 将对每个匹配“this(cn.javass.spring.chapter6.service.IIntroductionService)”切入点表 达式的AOP代理对象创建一个切面实例,注意“IIntroductionService”可能是引入接口。
pertarget:每个切入点表达式匹配的连接点对应的目标对象都会创建一个新的切面实例,使用@Aspect("pertarget(切入点表达式)")指定切入点表达式;
如@Aspect("pertarget(target(cn.javass.spring.chapter6. service.IPointcutService))")将对每个匹配 “target(cn.javass.spring.chapter6.service. IPointcutService)”切入点表达式的目标对象创建一个切面,注意“IPointcutService”不可能是引入接口。
在进行切面定义时必须将切面scope定义为“prototype”,如“<bean class="……Aspect" scope="prototype"/>”,否则不能为每个匹配的连接点的目标对象或AOP代理对象创建一个切面。
相关文章
- CSS动画实例:旋转的圆角正方形
- 07Vue - Vue实例(属性与方法)
- Objective-C开发之CodeBlocks实例操作
- 如何启用 Apache 的 PHP-FPM 多实例
- 可见性问题实例
- Qt网络程序:基于TCP的服务器、客户端实例
- 康师傅JVM:对象的实例化内存布局与访问定位(十)
- 《HTML5 开发实例大全》——1.15 设置< progress >进度条的样式
- Selenium2学习-017-WebUI自动化实战实例-015-获取浏览器中的 cookie 信息
- 简单实例讲解linux的module模块编译步骤
- Android App开发超实用实例 | OpenCV在Android手机实现在图像上添加文本
- SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对照注解方式的优缺点)
- C# 学习教程 之 泛型类型参数的限制约束和代码实例
- 【深度学习】——模型评估指标MAP计算&实例计算
- CAD查询命令应用实例:测量CAD多段线的总长度