spring AOP理解和相关术语
一、AOP理解
AOP:横向抽取机制,底层使用代理方式实现。
示例:
现有LogDAO接口以及实现Log接口的Log类。类有add的方法,现在要打印add方法的开始时间和结束时间。(即增强Log的add方法)
1.LogDao接口
2.Log类(委托类,实现具体的逻辑)
3.LogProxy类(静态代理类)
4.LogStaticFactory类(代理工厂)
通过代理工厂,用户在生成LogDao实例时就不用考虑用Log类还是LogPorxy类
5.TestAop类(测试类)和结果
通过创建代理类成功实现了对Log类的add方法增强,但需注意的是代理类必须实现Log类中所有的方法,这样当Log类方法特别多的时候,或者Log类中方法改变的时候就会使代码维护变得困难。这样便需要动态代理。
二、AOP操作术语
1.连接点:在类中可以被增强的方法称为链接点。
2.切入点:在实际操作中被增强的方法称为切入点。
3.通知/增强:对方法添加新功能,这些新功能叫做增强。
(1)前置增强:在方法之前执行。
(2)后置增强:在方法之后执行。
(3)异常通知:在发生异常时执行。
(4)最终通知:在后置之后执行。
(5)环绕通知:既在方法前执行,也在方法后执行。
4.切面:把增强具体应用到切入点的过程称为切点。
spring AOP理解和相关术语的更多相关文章
- Spring的AOP开发的相关术语
转载自 https://www.cnblogs.com/ltfxy/p/9873618.html SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. ...
- 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)
[AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...
- 十一 Spring的AOP开发的相关术语
SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. Spring的AOP有自己实现的方式,但是非常繁琐.AspectJ是一个AOP框架,Spring ...
- 关于Spring的理解和相关笔记
java不死的原因就是:就是因为他有一个核心非常强大的技术框架支持. Spring IOC: Inverse Of Control 控制反转 IFly fly; AOP: Aspect Oriente ...
- Spring AOP理解
Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...
- spring aop 理解
aop简介 aop是spring 的两大特性之一,还有IOC.主要提供面向切面的编程思想,区分于面向对象编程. aop原理(动态代理+反射) 在一个方法体中,可能会存在很多其他的方法调用,我们可以把每 ...
- Spring框架学习05——AOP相关术语详解
1.Spring AOP 的基本概述 AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查 ...
- Spring AOP相关术语
---------------------siwuxie095 Spring AOP 相关术语 (1)Joinpoint ...
- Spring AOP的理解和使用
AOP是Spring框架面向切面的编程思想,AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中. 掌握AO ...
随机推荐
- UI自动化测试篇 :ReportNG替代TestNG自带html版测试报告初探
转载http://www.cnblogs.com/chengtch/p/6071322.html “1.1.4版本的ReportNG是最后一个版本,之后不再做维护.作为一个简单的测试报告插件,它是创造 ...
- Laravel之命令
一.创建命令 php artisan make:console SendEmails 上述命令将会生成一个类app/Console/Commands/SendEmails.php,当创建命令时,--c ...
- 关于ionic打包出错:ionic Unable to start the daemon process
一直试都没问题的ionic build android 今天竟然冒出了这个错误 Error:Unable to start the daemon process. This problem migh ...
- 类的成员函数指针和mem_fun适配器的用法
先来看一个最简单的函数: void foo(int a) { cout << a << endl; } 它的函数指针类型为 void (*)(int); 我们可以这样使用: v ...
- extjs_06_grid(列锁定&列分组)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- WebGL 启动载入触发更新流程分析
WebGL 启动载入触发更新流程分析 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载 ...
- Python内置模块和第三方模块
1.Python内置模块和第三方模块 内置模块: Python中,安装好了Python后,本身就带有的库,就叫做Python的内置的库. 内置模块,也被称为Python的标准库. Python 2.x ...
- ecplise内存配置
-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256m -XX:+UseG1GC
- react-native 调用第三方 SDK
步骤一:android 文件修改 (1)In android/settings.gradle ... include ':VoiceModule', ':app' project(':VoiceMod ...
- Rosbridge 的使用
参考文献: http://rosclub.cn/post-569.html ROS与Android的窃窃私语 1.简介 ROSbridge 顾名思义,是一个ROS当中的中间件,ROS 桥,是用 ...