- 底层是动态代理
- jdk动态代理
- 使用jdk反射包中的类实现代理对象的功能。
- 要求:目标类必须实现接口
- cglib动态代理
- 使用第三个方工具库,实现代理类对象的创建。
- 要求目标类可以被继承,不能是final限定
- 目标类通过继承,生成和改写目标类。
- 原理:继承,子类就是代理对象。
- aop被看作是动态代理规范化,把实现动态代理的步骤规范化。
- 切面的三要素
- 切面功能
- 切面设置位置(在哪个方法上)
- 切面设置时间(方法的前后环)
- aop的作用
-
- 不修改源代码的情况下增加功能。
- 减少重复代码
- 专注业务功能实现(例如,日志功能和业务分开)
- 解耦合。(业务功能,和非业务功能)
- 什么时候用aop技术
-
- 当给系统一个存在的类修改功能,但是又不能修改代码。
- 要给项目中的多个类增加一个相同的功能。
- 给业务方法增加事务,日志输出。
- aop的实现框架
-
- spring实现了aop,实现方式是接口
- aspectj框架
- 配置文件实现aop
- 注解实现aop
- aop中的术语
-
- aspect切面,表示给业务方法增加功能,一般日志输出,事务,权限检查等,是切面,大白话就是,额外的功能代码块。
- pointcut切入点。是一个或多个joinpoint的集合。表示切面能执行的功能
- advice通知,也叫增强,表示切面执行的时间,例如,方法前,方法后,环绕。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)