一、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理解和相关术语的更多相关文章

  1. Spring的AOP开发的相关术语

    转载自 https://www.cnblogs.com/ltfxy/p/9873618.html SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. ...

  2. 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)

    [AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...

  3. 十一 Spring的AOP开发的相关术语

    SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. Spring的AOP有自己实现的方式,但是非常繁琐.AspectJ是一个AOP框架,Spring ...

  4. 关于Spring的理解和相关笔记

    java不死的原因就是:就是因为他有一个核心非常强大的技术框架支持. Spring IOC: Inverse Of Control 控制反转 IFly fly; AOP: Aspect Oriente ...

  5. Spring AOP理解

    Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...

  6. spring aop 理解

    aop简介 aop是spring 的两大特性之一,还有IOC.主要提供面向切面的编程思想,区分于面向对象编程. aop原理(动态代理+反射) 在一个方法体中,可能会存在很多其他的方法调用,我们可以把每 ...

  7. Spring框架学习05——AOP相关术语详解

    1.Spring AOP 的基本概述 AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查 ...

  8. Spring AOP相关术语

    ---------------------siwuxie095                                 Spring AOP 相关术语         (1)Joinpoint ...

  9. Spring AOP的理解和使用

    AOP是Spring框架面向切面的编程思想,AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中. 掌握AO ...

随机推荐

  1. 自己写的粗糙的Excel数据驱动Http接口测试框架(一)

    1.excel用例: 2.用例执行: @Testpublic void BindBank() throws Exception { String fileName = "src/main/j ...

  2. 将ByteArrayOutputStream类型变量中的数据存储到文件中

    代码: File zipFile=new File("c:\\1.zip");ByteArrayOutputStream byteOSZip = new ByteArrayOutp ...

  3. OpenSSL Heartbleed "心脏滴血"漏洞简单攻击示例

    转自:http://www.lijiejie.com/openssl-heartbleed-attack/ OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一 ...

  4. Android 6.0及以上版本号的执行时权限介绍

    执行时权限(Runtime Permission)是Android 6.0( 代号为 Marshmallow,API版本号为 23)及以上版本号新增的功能.相比于以往版本号,这是一个较大变化. 本文将 ...

  5. 运用JS导出ecxel表格、实现文件重命名

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Android监听HOME键的最简单的方法

    public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; public void onCreate(Bundle savedInsta ...

  7. MySQL - Show Processlist 整理(转)

      原文来源:MySQL 5.5 Reference Manual 部分翻译取自:<MySQL_5.1中文参考手册> 转载请注明原文链接http://www.cnblogs.com/len ...

  8. Mysql 常用函数汇总

    转自:http://blog.csdn.net/qq_27416209/article/details/52020720 一.数学函数ABS(x)   返回x的绝对值BIN(x)   返回x的二进制( ...

  9. .NET CORE 2.0小白笔记(五):配置的热更新、配置的框架设计

    配置的热更新 什么是热更新:一般来说,我们创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的 我们只需要吧项目中用到的IOptions改成IOptionsSnap ...

  10. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向

    很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...