Spring

2021-08-13  本文已影响0人  Zeppelin421

核心结构

Spring是一个分层非常清晰并且依赖关系、职责定位非常明确的轻量级框架,主要包括几大模块:数据处理模块、Web模块、AOP/Aspects模块、Core Container模块和Test模块。

核心思想

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解决什么问题
在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复

为什么叫面向切面编程
[切]:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以面向横切逻辑
[面]:横切逻辑代码往往要影响很多个方法,每一个方法都如同一个点,多个点构成面,有一个面的概念在里面

上一篇 下一篇

猜你喜欢

热点阅读