聊完了Spring框架中最重要的两种设计模式,咱们来看一下Spring框架的模块和结构图。
下图是Spring官方给出的Spring框架的结构图。spring
从图中咱们能够看到Spring的四大部分:核心容器(container)、AOP模块、Web模块、Data模块。编程
咱们能够看到Spring给咱们提供的模块至关的丰富,不管是持久层、业务层仍是控制层都有所涉及。设计模式
既然Spring如此的方便,那么它又是如何作到的呢?缓存
很简单,经过两点:安全
既然说到控制反转,那么咱们不由要问什么控制被反转了?
答案是:咱们对对象的控制权被反转了。咱们将对象的控制交给了Spring的容器。框架
那么问题又来了,什么是Spring的容器?
简单的说,Spring容器就是一个超级大工厂,负责建立、管理全部的Java对象,这些Java对象被称为Bean。Spring容器管理着容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系。编码
什么又是依赖注入呢?
依赖注入(DI)就是控制反转的一种实现形式,Spring容器也是经过这种形式管理Bean的。spa
Spring容器如何作到替你管理这些bean的呢?
工厂模式。设计
Spring框架费了九牛二虎之力建立一个Spring容器去帮咱们管理这些Bean又有什么好处呢?
其实和工厂模式的好处差很少:代理
聊完了控制反转咱们再来看看Spring框架的另外一项关键技术AOP。
什么是面向切面编程?
面向切面编程:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
这句话读完估计跟没读没什么区别,仍是没懂。下面咱们来看一张图:
从图中咱们能够看出:咱们每写一个业务功能,都须要判断权限、记录日志、提交事务、这些逻辑是否是都是重复的呀,这至关于什么呢?至关于咱们前面说的脏活累活,这都不是咱们的重点,咱们的重点是业务逻辑,就是说咱们须要把总体框架搭好,实际编写的时候只须要将咱们的业务代码切入到框架之中,就好了。
原理:代理模式。
为何须要AOP?
AOP专门用于处理系统中分布于各个模块或者不一样方法中的交叉关注点的问题。好比:在程序中,咱们经常须要处理一些具备横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP是一种很是经常使用的解决方案。
面向切面编程对咱们来讲有什么好处?
注意:面向切面编程只是面向对象编程的一种补充。
讲了这么多咱们来对Spring框架作一个总结。
下一节,咱们将讨论Spring框架在WEB开发的应用Spring MVC。