AOP 面向切边编程
· Aop 利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓切面:简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或者责任封装起来,便于就按少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性
使用横切技术,AOP把软件系统分为两个部分,核心关注点和横切关注点 业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。
Spring中的AOP
提供声明式事务:允许用户自定义切面
Spring中AOP 代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。
Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib 。
Spring Aop 中的动态代理
动态代理(jdk代理)
特点:
1.不需要自己写代理对象,但是目标对象还是要实现接口
2代理对象的生成 是利用JDK api,动态的在内存中构建代理对象(
需要我们指定创建 代理对象/目标对象 实现的接口的类型;);
3动态代理也叫jdk代理,接口代理
优点 不需要自己去创建代理类
缺点 目标对象一定要实现接口,否则不能用动态代理
未完成