后端面经 Spring简介

1. Spring简介

Spring是为了简化java项目开发设计的一款设计层面开源框架,其设计目的就是为了“简化开发”。
它使用分层架构,解决业务逻辑层和各层之间的松耦合。
核心特性:

  • IOC:控制反转;

  • AOP:面向切面编程;

2. Spring模块

Spring框架可分为如下所示的模块:

Spring

  • 核心容器(Core Container):核心容器提供Spring框架的基本功能;

  • 数据访问/集成(Data Access/Integration)

  • 网络(Web);

  • AOP模块和Aspects(切面);

  • 设备(Instrumentation);

  • 测试(Test);
    每个模块的详细介绍可参考此博客:Spring详解(一)----Spring框架介绍

3. Spring核心特性

  1. IOC
    IOC(Inversion of Control)即控制反转,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。
    Spring框架在核心容器中的BeanFactory模块中使用了工厂模式创建Java对象,这些对象就是常说的“Bean”对象,对于Bean对象的生命周期、创建方式,在此不做赘述。
    DI(Dependency Injection)即依赖注入,是IOC的一种实现方式,即通过反射机制,将Bean对象的属性注入到Bean对象中。有两种注入方式:设值注入(通过setter方法进行设置,较为简单)、构造注入(可构造依赖注入的优先级,但是较为复杂)。

  2. 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”对象;而面向切面编程指的是将项目中的通用功能进行封装,形成独立切面从而复用。

参考资料

  1. Spring详解(一)----Spring框架介绍

  2. Spring基础知识汇总 Java开发必看

  3. Spring开发-廖雪峰官方网站