所谓切面实例化模型指何时实例化切面。

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代理对象创建一个切面。

示例请参考cn.javass.spring.chapter6. InstanceModelTest。

最新文章

  1. jQuery的$.ajax
  2. asp.net C#获取程序文件相关信息
  3. 访问控制public/protected/private的区别
  4. python sorted和sort
  5. (转)Android: NDK编程入门笔记
  6. flex-linkbutton
  7. 如果一个Object对象可能是集合或者数组那么如何对其进行迭代
  8. 在win7/8/10鼠标右键添加按下SHIFT键时弹出的“在此处打开命令窗口”
  9. 静态库 .a 转成共享库 .so
  10. TPYBoard自制微信远程智能温湿度计
  11. opencl 和Renderscript总结
  12. MySQL innodb_table_monitor 解析
  13. AngularJS学习笔记之directive——scope选项与绑定策略
  14. 我为什么放弃MySQL?最终选择了MongoDB
  15. 【XSY2851】蛋糕 数学
  16. @WebFilter注解
  17. linux 乌班图 lnmp环境搭建
  18. navicat 链接 mysql 报错1251
  19. 关于git提示“warning: LF will be replaced by CRLF”终极解答
  20. java高级⑴

热门文章

  1. hdu 3047 Zjnu Stadium 并查集高级应用
  2. JS取得不同连接的地址,并打开新窗口
  3. win64系统丢失d3dx9d_40.dll问题
  4. 多线程threading.local的作用及原理?
  5. (转)专项:Android 内存泄露实践分析
  6. mysq查询语句包含中文以及中文乱码,字符集 GBK、GB2312、UTF8的区别
  7. Python高级教程-切片
  8. go——标准命令
  9. form:checkboxes radiobutton select用法
  10. hive--udf函数(开发-4种加载方式)