AOP的自动代理(基于AspectJ框架)
2015-10-20 00:00
591 查看
AOP的通知类型:
aop联盟定义aop通知类型,spring对aop联盟规范支持。AOP联盟不是Spring的,先是AOP联盟定义了一个接口org.springframework.aop.Advice而Spring觉得不错,就改写了分成5种类型
aop联盟定义5种通知
前置通知org.springframework.aop.MethodBeforeAdvice
在目标方法执行前实施增强
后置通知org.springframework.aop.AfterReturningAdvice
在目标方法执行后实施增强
环绕通知org.aopalliance.intercept.MethodInterceptor
在目标方法执行前后实施增强
异常抛出通知org.springframework.aop.ThrowsAdvice
在方法抛出异常后实施增强
引介通知org.springframework.aop.IntroductionInterceptor(了解)对一个类进行增强(添加方法或属性等)
在目标类中添加一些新的方法和属性
如果使用aop联盟规范进行aop开发,所有的通知必须实现接口。(底层为了确定通知方法名称)
Advisor和Aspect区别:
Advisor:Spring传统的切面.一般都是由一个切入点和一个通知的组合.(单个)Aspect:Aspect是真正意义上的切面.是由多个切入点和多个通知组合.(多个)
AOP基于AspectJ的自动代理(实现了接口,配置用<aop:Advisor>):
因为使用AOP,所以Spring需要的包以外,还要导入联盟API开发包.jar----------->(依赖包下)
AOP所需要的核心包.jar----->(主包下)
1.切面类
需要总结:
需要根据AOP联盟确定一个通知类型:这里使用环绕通知
所以切面类随便写,随便实现一个通知类型,重写里面的invok方法在,通过参数调用
proceed()执行目标类,前后可以写代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
因为是AOP开发,所有需要引入AOP的DTD约束
与AOP的半自动代理的区别在于:
半自动代理没有使用AOP约束,要手动配置代理类与目标类的关系
半自动代理是基于ProxyFactoryBean的代理类:
缺点:
*配置麻烦:
*需要为每一个要增强的类配置一个ProxyFactoryBean.(只要有增强,就需要写一个ProxyFactoryBean的配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
1.配置切面类的Bean实例
2.配置目标类的Bean实例
3.配置切入点(结合exeution表达式)
4.配置切面(切入点和通知/加强点)
结果:
AOP自动代理:(切面类不需要实现接口/配置用<aop:aspect>)
1.目标类:(同上)2.切面类:(随便写)eg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
相关文章推荐
- ASP.NET 5 Beta8发布及升级经验
- Asp.net笔记(1)
- ASP.NET MVC4 WEB API简单应用
- ASP.NET文件操作
- Aspx页面模拟WebService功能
- CoordinatorLayout CollaspingToolBar
- ASP.NET MVC 在项目中使用面包屑导航
- asp文件用什么软件编辑
- asp.net OleDb导入Excel,并显示导入内容
- raspberry pi怎样输出I2S音频
- asp:HyperLink vs asp:LinkButton
- ASP.NET WEB服务控件
- asp文件如何打开
- asp.net的页面加载顺序
- ASP.NET动态网站制作(14)-- CSS3
- 区分ASP.NET中get方法和post方法
- iOS:Scale to Fill,Aspect Fit,Aspect Fill
- ASP.NET MVC 在项目中使用面包屑导航
- 基于ASP实现QQ在线查询功能
- Asp.net大文件下载的实现思路及源码