轻量级Java开发框架,核心为IOC(控制反转)、AOP(面向切面编程)。主要作用:Spring是一个容器,为代码解耦,降低代码间的耦合度。
根据功能的不同,一个系统的代码可分为
- 主业务逻辑
代码间逻辑联系紧密,有具体专业业务应用场景,服务型相对较低 - 系统级业务逻辑
相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如日志、安全、事务等,复用性强
Spring根据以上特点,将降低耦合度的方式分为了两类:IOC与AOE。
- IOC:使得主业务在相互调用过程中,不再自己维护关系,即不用再自己创建要使用的对象了,而是由Spring容器统一管理,自动“注入”;
- AOP:使得系统级服务得到很大的复用,且不用再由程序员手动将系统级服务“混杂”到主业务逻辑中,而是由Spring容器统一完成“织入”
一、Spring体系结构
二、Spring的特点
- 非侵入式
Spring框架的API不会再业务逻辑上出现,即业务逻辑是POJO。由于业务逻辑中没有Spring的API,所以业务逻辑可以从Spring框架快速的移植到其他框架。 - 容器
可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件,来定义对象,以及设置与其他对象的依赖关系。 - IOC(Inversion of Control)
创建被调用者的实例不是由调用者完成,而是由Spring容器完成,并注入调用者;创建被调用者的实例不是由调用者完成,而是由Spring容器完成,并注入调用者。 - AOP(Aspect Orient Programming)
是一种编程思想,是面向对象编程OOP的补充。允许通过分离应用的业务逻辑与系统级服务进行开发。应用对象只实现他们应该做的,即完成业务逻辑仅此而已。他们并不负责其他的系统级关注点。
我们可以把日志、安全、事务管理等服务理解成一个“切面”,那么以前这些服务一直是直接写在业务逻辑的代码中的,造成业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,把这些服务剥离出来形成一个“切面”,以期复用,然后将“切面”动态的“织入”到业务逻辑中,让业务逻辑能够享受到此“切面”的服务。