Spring框架之我见(三)——IOC、AOP

聊完了Spring框架中最重要的两种设计模式,咱们来看一下Spring框架的模块和结构图。

Spring框架的结构

下图是Spring官方给出的Spring框架的结构图。spring

Spring框架

从图中咱们能够看到Spring的四大部分:核心容器(container)、AOP模块、Web模块、Data模块。编程

  • 首先看核心容器,从核心俩字咱们能够看出,这是Spring最重要的部分。主要的功能是实现了控制反转(IOC)与依赖注入(DI)、Bean配置、加载以及生命周期的管理。
  • AOP模块:负责Spring的全部AOP(面向切面)的功能。
  • Web模块:扩展了Spring的Web功能。使其符合MVC的设计规范,最重要的是提供了Spring MVC的容器。
  • Data模块:提供了一些数据相关的组件:包括JDBC、orm(对象关系映射)、事务操做、oxm(对象xml映射)、Jms(Java消息服务)。

咱们能够看到Spring给咱们提供的模块至关的丰富,不管是持久层业务层仍是控制层都有所涉及。设计模式

  1. Spring几乎包揽除了业务逻辑以外的的全部工做,包括日志管理、事务管理、Bean管理、安全管理等。
  2. Spring致力于全套的Java问题的解决方案,在全部的Java能够涉足的领域,Spring都会提供相应的支持。(即便没有支持,也会让咱们去整合)
  3. 与第三方框架的整合。在个人理解中Spring框架就像一个插线板,而第三方框架就至关于插头,能够轻易地与它组合在一块儿。须要的时候就插上去,不须要的时候就拔掉,至关的方便。

既然Spring如此的方便,那么它又是如何作到的呢?缓存

很简单,经过两点:安全

  • 控制反转(IOC)
  • 面向切面编程(AOP)

控制反转(IOC)/依赖注入(DI)

既然说到控制反转,那么咱们不由要问什么控制被反转了?
答案是:咱们对对象的控制权被反转了。咱们将对象的控制交给了Spring的容器框架

那么问题又来了,什么是Spring的容器?
简单的说,Spring容器就是一个超级大工厂,负责建立、管理全部的Java对象,这些Java对象被称为Bean。Spring容器管理着容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系。编码

什么又是依赖注入呢?
依赖注入(DI)就是控制反转的一种实现形式,Spring容器也是经过这种形式管理Bean的。spa

Spring容器如何作到替你管理这些bean的呢?
工厂模式。设计

Spring框架费了九牛二虎之力建立一个Spring容器去帮咱们管理这些Bean又有什么好处呢?
其实和工厂模式的好处差很少:代理

  • 解除硬编码耦合,利于项目升级和维护;
  • 简化了对象的管理,使咱们更加专一于业务操做;

聊完了控制反转咱们再来看看Spring框架的另外一项关键技术AOP。

面向切面编程(AOP)

什么是面向切面编程?

面向切面编程:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

这句话读完估计跟没读没什么区别,仍是没懂。下面咱们来看一张图:

spring-aop

从图中咱们能够看出:咱们每写一个业务功能,都须要判断权限、记录日志、提交事务、这些逻辑是否是都是重复的呀,这至关于什么呢?至关于咱们前面说的脏活累活,这都不是咱们的重点,咱们的重点是业务逻辑,就是说咱们须要把总体框架搭好,实际编写的时候只须要将咱们的业务代码切入到框架之中,就好了。

原理:代理模式。

为何须要AOP?
AOP专门用于处理系统中分布于各个模块或者不一样方法中的交叉关注点的问题。好比:在程序中,咱们经常须要处理一些具备横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP是一种很是经常使用的解决方案。

面向切面编程对咱们来讲有什么好处?

  1. 减小重复;
  2. 专一业务;

注意:面向切面编程只是面向对象编程的一种补充。

讲了这么多咱们来对Spring框架作一个总结。

Spring 总结

  1. Bean的统一管理,下降了对象之间的耦合
  2. 对主流的框架提供了很好的集成支持
  3. 提供众多组件,事务管理,JDBC等
  4. 具备高度可开放性,开发者能够自由选择Spring部分或所有
  5. 主要使用工厂模式和代理模式。
  6. 低侵入,代码污染极低。(咱们不会由于用了spring而影响咱们的正常的业务逻辑)
  7. AOP的很好支持,方便面向切面编程(AspectJ)。

下一节,咱们将讨论Spring框架在WEB开发的应用Spring MVC。

相关文章
相关标签/搜索