静态代理模式
- SpringAOP和SpringMVC
- 代理模式的分类
- 静态代理
- 角色分析
- 抽象角色:接口、抽象类
- 真实角色:被代理的角色
- 代理角色:代理真实角色,代理真实角色之后,一般会做一些附属操作
- 客户:访问代理对象的人
- 静态代理的好处
- 真实操作更加纯粹,不用关注公共事务
- 公共事务交给了代理角色,实现了业务分工
- 公共业务发生扩展时,方便集中管理
- 静态代理的缺点
- 一个真实角色就会产生一个代理角色:代码量会翻倍,开发效率会变低
- 角色分析
- 动态代理
- 角色一样
- 代理类是动态生成的,不是直接写好的
- 两大类:基于接口的动态代理,基于类的动态代理
- 基于接口:JDK动态代理
- 基于类:cglib
- java字节码实现:javasist
- 需要了解两个类:Proxy:代理,InvocationHandler:调用处理程序
- 动态代理的好处
- 真实操作更加纯粹,不用关注公共事务
- 公共事务交给了代理角色,实现了业务分工
- 公共业务发生扩展时,方便集中管理
- 一个动态代理类代理的是一个接口,一般对应的是一类业务
- 一个动态代理类可以代理多个类,只要实现了同一个接口即可
- 静态代理
- 代码步骤:
- 接口
- 真实角色
- 代理角色
- 客户端访问代理角色
AOP
- AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
- AOP在Spring中的作用
- ==提供声明式事务;允许用户自定义切面==
- 横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志 , 安全 , 缓存 , 事务等等 ….
- 切面(ASPECT):横切关注点 被模块化 的特殊对象。即,它是一个类。
- 通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。
- 目标(Target):被通知对象。
- 代理(Proxy):向目标对象应用通知之后创建的对象。
- 切入点(PointCut):切面通知 执行的 “地点”的定义。
- 连接点(JointPoint):与切入点匹配的执行点。
- 使用Spring实现AOP
- AOP织入,导入包。
- 方法一:使用Spring接口【主要是SpringAPI接口实现】
- 方法二:使用自定义类来实现AOP【主要是切面定义】
Mybatis回忆
- 编写实体类
- 编写核心配置文件
- 编写接口
- 编写Mapper.xml
- 测试
**TODO:**此处,狂神说的Spring p24整合mybatis方式一 25整合mybatis方式二,暂时跳过。等学完mybatis再回来。
Spring声明式事务
事务:把一组事务当成一个业务来做;要么都成功,要么都失败。
事务在项目开发中,涉及到数据的一致性,不能马虎
事务的ACID原则:
- 原子性、
- 一致性、
- 隔离性:多个业务可能操作同一个资源,防止数据损坏。
- 持久性:事务一旦提交,无论系统发生什么问题,结果都不会再被影响
spring中的事务管理
- 声明式事务:AOP
- 编程式事务:需要在代码中,进行事务的管理
为什么需要事务?
- 如果不配置事务,可能存在数据提交不一致的情况下;
- 如果我们不在spring中去配置声明式事务,我们就需要在代码中手动配置事务!
- 事务在项目的开发中十分重要,涉及到数据的一致性和完整性问题,不容马虎!!
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。