一、概念

AOP面向切面编程,是函数式编程的延申,是对OOP的补充;

代理模式:拦截增强作用,增强功能;

1、java继承,纵向共性抽取,

2、横向切面AOP织入增强代码方式

二、原理是通过代理机制,代理模式的意思就是用代理对象增强原来的真实对象的功能,如Filter拦截器;

其中,Proxy是java自带的一个类;

三、AOP术语

四、手动实现AOP编程,用JDK的Proxy代理,AOP只是一种思想

代理:必须要有接口存在,因为创建代理对象时参数列表第二个参数就是接口的实现类对象(真实对象),接口是不能创建对象的;

1、静态工厂类:

其中,先创建了接口的实现类对象,为真实对象,再创建代理对象来拦截和增强真实对象的方法功能;

其中,这边的创建代理对象的第三个参数列表是一个匿名内部类,匿名内部类访问外面的静态方法中的局部变量时,要让这变量用final修饰;

代码测试:

其中,使用静态工厂创建出代理对象增强真实对象的方法功能;

五、使用cglib代理手动实现AOP

1、代码实现

代码测试:

2、细节优化

proxy代理对象是真实对象的子类;

解耦是和外面的studentService对象没有关系了;

动态代理意思是这个代理对象是程序运行时生成的,代码里看不到这个类和对象存在;

最新文章

  1. cstore_fdw的安装使用以及源码分析
  2. 有人要分享pjax吗?
  3. Java this的一两点使用
  4. ORACLE 数据库 MOD 函数用法
  5. React - redux, jsx中写js示例
  6. PicklingError: Can't pickle <type 'generator'>: it's not found as __builtin_
  7. Android中的EditText默认时不弹出软键盘的方法
  8. chgrp、chown、chmod命令
  9. hdoj 1969 Pie【二分】
  10. 什么是Web Worker?
  11. APP性能测试(电量)
  12. hive的数据导入与数据导出:(本地,云hdfs,hbase),列分隔符的设置,以及hdfs上传给pig如何处理
  13. C++ 中时钟函数的使用
  14. Dubbo-Fail to decode request due to: RpcInvocation
  15. Linux 挂载
  16. Spring3.2.3+Quartz2.2.1 整合配置
  17. brew 接口的原理
  18. .aspx页面 引用命名空间 (Import 指令,web.config)
  19. 在centos 5.11上安装pylint
  20. c语言描述的二叉树的基本操作(层序遍历,递归,非递归遍历)

热门文章

  1. HCNA Routing&Switching之VLAN间路由
  2. 手写Pascal解释器(一)
  3. CF466C 题解
  4. 干了8年Android开发熬到年薪40万,突然接到被辞退消息,应该怎么办?
  5. 记一次在Windows10桌面环境搭建Jekins的吐血经历
  6. 字符串对比 BASIC-15
  7. 【SpringBoot技术专题】「JWT技术专区」SpringSecurity整合JWT授权和认证实现
  8. SpringCloud升级之路2020.0.x版-17.Eureka的实例配置
  9. NOIP 模拟 $20\; \rm 玩具$
  10. (二)js基础。。。freecodecamp笔记