【后端面经-Spring】Spring简介
1. Spring简介
Spring是为了简化java项目开发设计的一款设计层面开源框架,其设计目的就是为了“简化开发”。
它使用分层架构,解决业务逻辑层和各层之间的松耦合。
核心特性:
- IOC:控制反转;
- AOP:面向切面编程;
2. Spring模块
Spring框架可分为如下所示的模块:
- 核心容器(Core Container):核心容器提供Spring框架的基本功能;
- 数据访问/集成(Data Access/Integration)
- 网络(Web);
- AOP模块和Aspects(切面);
- 设备(Instrumentation);
- 测试(Test);
每个模块的详细介绍可参考此博客:Spring详解(一)----Spring框架介绍
3. Spring核心特性
- IOC
IOC(Inversion of Control)即控制反转,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。
Spring框架在核心容器中的BeanFactory模块中使用了工厂模式创建Java对象,这些对象就是常说的“Bean”对象,对于Bean对象的生命周期、创建方式,在此不做赘述。
DI(Dependency Injection)即依赖注入,是IOC的一种实现方式,即通过反射机制,将Bean对象的属性注入到Bean对象中。有两种注入方式:设值注入(通过setter方法进行设置,较为简单)、构造注入(可构造依赖注入的优先级,但是较为复杂)。 - AOP
AOP(Aspect Oriented Programming)即面向切面编程,是一种编程思想,是对OOP(Object Oriented Programming)的补充,OOP是对业务逻辑的封装,而AOP是对业务逻辑的分离,即将业务逻辑和非业务逻辑分离,使得业务逻辑更加清晰。
AOP将项目中的通用功能进行封装,形成独立切面从而复用。
4. Spring的后续拓展
Spring是由Rod Johnson于2003年创建的,目前已经发展到了Spring5.0版本。后来,在Spring框架的基础上,又引申出了SpringBoot、SpringCloud等框架,这些框架都是基于Spring框架的,是Spring框架的拓展。目前SpringBoot框架也是一个常用框架。
学习路径应如下所示:
Java基础-->设计模式-->Spring框架-->SpringMVC-->SpringBoot、SpringCloud
面试模拟
Q:介绍一下Spring,什么是IOC、AOP、JavaBean?
A:Spring是为了简化java开发而设计的设计层面开源框架,核心思想是控制反转和面向切面编程,其中,控制反转指的是原本由程序手动创建对象的权力交给spring框架,从而实现资源的集中管理,创建的对象使用依赖注入的思想传递给相关类,这些被创建的对象称为“Bean”对象;而面向切面编程指的是将项目中的通用功能进行封装,形成独立切面从而复用。