第 1 章 认识 SSM 框架和 Redis
Spring 框架
成功的理念:
- IoC(Inversion of Control, 控制反转)
- AOP(Aspect Oriented Progamming, 面向切面编程)
- Spring IoC
就是将对象交由 IoC 容量管理, 认为一切的 Java 资源都是 Java Bean , 管理这些 Bean 以及他们的依赖关系.
应用:
1. 同一接口不同实现类的配置,(使用 xml 不需要修改源代码)
- ## 如下 Socket 接口有两个实现类
- Socket socket = new Socket1();
- Socket socket = new Socket2();
- <!-- 使用 socket1 实现类 -->
- <bean id="socket" class="Socket1" />
- <!-- 使用 socket2 实现类 -->
- <bean id="socket" class="Socket2" />
这样, 我们只需在 xml 文件配置不同的该 bean 中配置不同的 class 即可, 而不用去翻出代码去 new Socket1()的切换不同的实现类.
2.Bean 之间的依赖关系解耦
- <bean id="socket" class="Socket1"/>
- <bean id="user" class="xxx.User">
- <property name="socket" ref="socket" />
- </bean>
我们可以再 user Bean 中配置或者不配置 socket Bean 来达到依赖关系之间的解耦
3. 声明周期, 事件, 行为等的管理
比如我们可以延迟加载 Bean, 在其声明中期定义一些行为等等.
总之就方便有效的使用和管理 Java 资源.
Spring AOP
OOP 的编程是不完善的, 有时候一个功能或条件会横跨几个甚至更多的对象, 影响他们的协作. 我们把这样的一个功能条件成为切面. 通过它去管理在切面上的某些对象之间协作.
应用:
●Spring AOP 常用于数据库事务的编程
在 Spring AOP 实现的数据库事务管理中, 是以异常作为消息的. 在默认的情况下(可以通过 Spring 的配置修改), 只要 Spring 接收到了异常信息, 他就会将数据库回滚, 从而保证数据的一致性.
这样我们就知道, Spring 在事务管理中只要接收到异常就会回滚, Spring 已经提供了隔离级别和传播行为去控制事务.
因此, 我们只需要关注业务, 遇到问题抛异常就好了, 不需要自己手动的在代码里面 try...catch...finally... 了.
MyBatis
ORM(Object Relational Mapping)框架
提供特性:
自动映射, 动态 SQL, 级联, 缓存, 注解, 代码和 SQL 分离, 以及接口编程(不需要实现类只需要一个接口和 xml 或注解)
优点:
灵活, 封装少, 映射多样化, 支持存储过程, 可以进行 SQL 优化
Spring MVC
Spring MVC 与 Spring 的 IoC 和 AOP 能无缝对接, 而且结构清晰. 把应用程序的 (输入逻辑, 业务逻辑, UI 逻辑) 分层, 同时提供元素间的松耦合.
Model(模型): 封装了应用程序的数据和由他们组成的 POJO
View(视图): 负责把模型数据渲染到视图上.
Controller(控制器): 负责处理用户的请求, 并建立适当的模型传递给视图渲染(如:@ResponseBody 返回 JSON)
Spring MVC 的重点:
流程
重要的注解 (控制器, 视图解析器, 视图等)
Redis
最流行的 NoSQL(Not Only SQL)
快: 在内存上读写; 另外, 数据是半结构化的, 数据规则越少当然内存就读写更快咯
支持 6 种数据类型: String,Hash,List,Set,SortSet,INT
操作都是原子的: 也就是说数据安全, 可在高并发场景使用 Redis 的事物, 处理一些需要锁的业务.
应用的地方很多: 缓存, 消息队列(pub+sub 模式), 在 web 应用程序 session, 网站点击数等任何短暂数据中使用.
总之, Redis 主要是又快又能保证并发数据安全和一致性, 作缓存能够提升性能减少数据库压力, 又能满足抢红包, 商品秒杀的场景, 高速处理并保证数据安全一致.
SSM+Redis 结构
一张图说明:
来源: http://www.bubuko.com/infodetail-3111660.html