核心结构
Spring是一个分层非常清晰并且依赖关系、职责定位非常明确的轻量级框架,主要包括几大模块:数据处理模块、Web模块、AOP/Aspects模块、Core Container模块和Test模块。
- Spring核心容器(Core Container):是Spring框架最核心的部分,管理着Spring应用中bean的创建、配置以及生命周期。该模块中包括了Spring bean工厂,为Spring提供了DI功能,基于Bean工厂,我们还会发现有多种Spring应用上下文的实现。所有的Spring模块都构建于核心容器之上。
- 面向切面编程(AOP)/Aspects:Spring对面向编程提供了丰富的支持。这个模块是Spring应用系统中开发切面的基础,与DI一样,AOP可以帮助应用对象解耦。
- 数据访问与集成(Data Access/Integration):Spring的JDBC和DAO模块封装了大量样板代码,可以使数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据资源释放失败而引起的问题。
- Web:该模块提供了Spring MVC框架给Web应用,还提供了多种构建和其他应用交互的远程调用方案。
- Test:为了使得开发者能够方便的进行测试,Spring提供了测试模块以致力于Spring应用的测试。通过该模块,Spring为使用Servlet、JNDI等编写了单元测试提供了一系列的mock对象实现。
核心思想
IOC和AOP不是Spring提出的,在Spring之前就已经存在,只不过更偏向于理论化,Spring在技术层面把这两个思想做了非常好的实现*
IOC
IoC(Inversion of Control):控制反转/反转控制,它是一个技术思想,不是技术实现,描述的是开发领域对象的创建和管理问题。
什么叫控制反转
控制:指对象创建(实例化、管理)的权利
反转:控制权交给外部环境(Spring框架、IoC容器)
将对象创建的权利以及对象生命周期的过程管理交由Spring框架来处理
IoC解决了什么问题
IoC解决了对象之间的耦合问题
DI(Dependency Injection):依赖注入
创建对象的过程中Spring可以依据配置对象的属性进行设值
IoC和DI的区别
IOC和DI描述的是同一件事,只不过角度不一样
IOC是站在对象的角度,对象实例化及其管理的权利交给了(反转)容器
DI是站在容器的角度,容器会把对象依赖的其他对象注入
AOP
AOP(Aspect Oriented Programming):面向切面编程/面向方面编程
AOP是OOP的延续,OOP三大特征:封装、继承和多态
oop是一种垂直继承体系
OOP编程思想可以解决大多数的代码重复问题,但是有一些情况处理不了,比如在顶级父类Animal中的多个方法中相同位置出现了重复代码,OOP就解决不了
横切逻辑代码
在多个纵向(顺序)流程中出现的相同子流程代码,我们称之为横切逻辑代码
横切逻辑代码存在什么问题
横切代码重复问题
横切逻辑代码和业务代码混杂在一起,代码臃肿,维护不方便
AOP提出横向抽取机制,将横切逻辑代码和业务逻辑代码拆分
AOP解决什么问题
在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复
为什么叫面向切面编程
[切]:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以面向横切逻辑
[面]:横切逻辑代码往往要影响很多个方法,每一个方法都如同一个点,多个点构成面,有一个面的概念在里面
网友评论