Spring
Spring结构
- Data Access/Integration:持久层 是Spring对数据持久化、事务管理的支持。SpringDataJpa就是其中的一种
- Web:表现层 是Spring对表现层数据的处理部分的支持。SpirngMVC就是其中的一种
- Test:测试层 是Spring对项目提供的一个完整测试环境中间的两部分 是Spring框架的核心功能
Spring原先并无这三个结构,仅有中间两层结构
概念
Spring刚出世时,仅提供了一些核心功能模块,其中IOC&DI和AOP两大两大核心模块对企业项目开发过程产生了巨大的影响,后来,Spring在核心功能的的基础之上,延伸出更多的功能模块,由这些功能模块为企业项目开发提供了较完整的、全方位的解决方案
所以Spring概念在狭义及广义角度理解不同:
狭义角度
Spring指的是Spring框架核心功能模块
广义角度
Spring是一个提供了众多功能模块的生态圈
Spring的核心功能
Spring的核心功能指的是:控制反转(IOC) & 依赖注入(DI)
控制反转(IOC)
控制反转(IOC)是一种设计模式,将实例化对象的控制权由手动的new变成了Spring框架通过反射机制实例化,并将对象的实例存入在容器种进行管理
依赖注入(DI)
控制反转(IOC)将对象实例化的动作交由了Spring框架,它的作用是降低了程序的耦合,不需要我们手动的创建对象,但是程序的耦合性还是存在,对象中肯定会有一些其余对象的引用,那么这种引用就称为对象的依赖
如果一个类中的某个属性是另一个类,该属性无需手动赋值,通过Spring的配置文件或者注解,通过Spring框架可以实现直接注入属性
控制反转(IOC) & 依赖注入(DI)的关系
Spring通过控制反转(IOC)将A类进行实例化存入容器,通过配置文件或注解的方式将A类注入B类当中
面向切面编程(AOP)
在Spring中,切面编程指的就是通过预编译和运行期动态代理的方式实现在程序运行某个方法的时候,不修改原始执行代码逻辑,由程序动态地执行某些额外的功能,对原有的方法做增强,这就叫做面向切面编程,那个被监测的执行方法,称呼为切入点。
Spring优势
对于对象的实例管理更加方便,降低了代码的耦合性,提升了代码的可扩展性。
轻量级的容器框架没有侵入性
Aop可以更加容易的进行功能扩展,遵循ocp开发原则
创建对象默认是单例的,不需要再使用单例模式进行处理
Spring缺点
业务功能依赖spring特有的功能,依赖与spring环境。