文章目录

        • 1、Spring官网简介
        • 2、Spring总览
          • 2.1、什么是Spring
          • 2.2、Spring的发展历程
        • 3、Spring的设计理念
          • 3.1、Spring的优点
        • 4、IOC和AOP浅析
          • 4.1、IOC
          • 4.2、AOP
        • 5、Getting Started
        • 6、相关面试题

1、Spring官网简介

进入Spring的官网介绍,可以看到,Spring官网将整个Spring框架分成如下8个部分:

  • Overview:该模块主要介绍Spring的历史、设计理念、并且可以快速构建一个Spring的Demo等
  • Core:Spring中最最重要的一个模块。核心模块内容主要包含IOC容器、AOP、事件、Resource、数据绑定和数据校验等。
  • Testing:主要用于Spring项目的测试,如Mock对象、TestContext框架、Spring MVC的测试等。
  • Data Access:该模块包含Spring的事务、DAO、JDBC、ORM框架(Mybatis、Hibernate)等
  • Web Servlet:该模块主要包含SpringMVC、WebSocket、基于STOMP协议的消息传递
  • Web Reactive:该模块主要包含一些响应式的Web框架,如Spring WebFlux, WebClient, WebSocket.
  • Integration:该模块主要是用来在系统之间做消息传递的消息传递框架,主要包括:JMS, JMX, Email, Tasks等内容.
  • Languages:该模块主要介绍了Spring支持语言表达式,主要包括:Kotlin, Groovy, Dynamic Languages.

上面的8个部分大致可以分为以下5个大的模块,

根据上述图片,Spring可以分为如下5个模块,分别如下:

  • 核心模块(Core Container)
  • AOP模块(AOP、Aspect、Messaging)
  • 数据访问和集成模块(jdbc、orm、transaction等)
  • WEB模块(Web MVC、 websocket、Servlet)
  • 测试模块(Test)

2、Spring总览

关于Spring介绍,官网在Overview里面给出了一个完整的介绍,现在就看一下官网是如何描述Spring的吧。

2.1、什么是Spring

在Spring总览里面,第一节官网就给出了关于Spring的介绍,下面是它的定义

Spring是一个企业级应用框架,它提供了JAVA企业级应用开发所需要的一切功能。并且可以根据应用程序的需求灵活地创建多种体系结构。

Spring表示的是一个统称,它包含了Spring所有的"家族"成员,如Spring Framework,SpringBoot、SpringCloud、SpringBatch、SpringData、SpringIntegration等,但是本文的Spring指的就是Spring Framework。而其它的Spring框架都是以Spring Framework为基础建立的。

Spring框架分为多个模块,如 核心模块(core)、数据访问模块、web模块等。应用程序可以需要选择所需的模块。其中整个Spring框架最最核心的模块就是核心模块(core)了,核心模块里面重要的两个概念就是 IOC和AOP,这两个概念也会是本系列文章着重介绍的。

除此之外,Spring框架还为不同的应用程序体系结构提供了基础支持,包括消息传递,Spring事务、ORM框架以及Web,其中Web包括基于Servlet的Spring MVC,以及基于并行的响应式的Spring WebFlu。
2.2、Spring的发展历程
Spring框架在2003年正式发布,响应了J2EE规范的复杂性,在早期的时候,Spring应用程序需要部署到应用程序服务器(如Tomcat)上才能运行。

但是Spring发展到现在,借助SpringBoot, 开发人员可以快速的创建一个应用程序 ,进行敏捷开发,并且借助SpringBoot内嵌的Servlet容器可以直接运行应用程序。

并且从Spring5开始,WebFlux应用程序甚至不使用Servlet API,也能在非Servlet容器的服务器(例如Netty)上运行。

Spring发展到现在,已经有许多的"家庭"成员了,如:Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch。有兴趣的童鞋可以在官网下载它们的Demo学习。

3、Spring的设计理念

  • 提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。
  • 适应不同的观点。Spring拥抱灵活性,并不认为应该如何做。它以不同的视角支持广泛的应用需求。
  • 保持强大的向后兼容性。Spring的演变经过精心设计,可以在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。
  • 关心API设计。Spring团队投入了大量的思考和时间来制作直观的API,并且可以支持多个版本和多年。
  • 为代码质量设定高标准。Spring Framework强调有意义,最新且准确的Javadoc。它是极少数项目之一,可以声称干净的代码结构,包之间没有循环依赖。
3.1、Spring的优点
  • Spring为开发者提供了一站式的轻量级开发平台。它抽象出了我们在许多应用中常常遇到的共性问题,并且Spring在Java EE的应用开发中,支持POJO和使用JavaBean的开发方式,使应用面向接口开发。充分支持面向对象的设计方法。
  • 简化开发,Spring中的核心IOC和AOP有效的帮我们大幅简化开发成本,对象间的依赖耦合关系,使用Spring的IoC便可以轻松的实现。AOP则把我们开发过程中可能出现的大量重复代码在AOP内完成,比如应用日志,安全控制等。
  • 应用集成,Spring的设计使其与生俱来的能够与其他第三方框架无缝结合,使我们的开发更加灵活,比如与Struts框架,hibernate框架,redis框架,mybatis框架等。

4、IOC和AOP浅析

4.1、IOC

在官网中,对IOC的介绍如下:

IOC(控制反转)也称为依赖注入,IOC容器负责Spring Bean的创建、装配、生命周期的管理以及Bean与Bean之间的关系。在这整个过程当中,IOC容器完成了一个完整Bean的实例化,包括其依赖的Bean的实例化,那么这个依赖的Bean实例化是由IOC容器完成,而不是由我们自己去实例化的,这个过程就是IOC(控制反转)了,就是将依赖的的Bean的实例化的交由IOC容器管理和注入。

IOC容器就是一个上下文(ApplicationContext)的实例化对象
4.2、AOP
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

5、Getting Started

如果你刚刚接触Spring,然后想要创建一个Spring的应用程序,那么你可能需要通过创建基于Spring Boot的应用程序来开始使用Spring Framework。 Spring Boot提供了一种快的方法来创建可用于生产环境的基于Spring的应用程序。

SpringBoot基于Spring框架,相对于Spring的繁琐的配置来说,SpringBoot更倾向于约定俗成,它去除了Spring繁琐的配置,采用了自动配置的方式使得开发人员可以快速的启动并运行Spring的应用程序,当然你也可以让自己的配置覆盖SpringBoot的自动配置。

点击下方链接,即可下载官方Demo进行学习啦。
start.spring.io

6、相关面试题

1、Spring常用模块有哪些?
答:core模块、AOP模块、数据访问与集成模块、Web模块、Test模块

2、说说你对Spring的认识?
答:回答2.1节的内容,可以补充3.1节的内容

3、什么是IOC和AOP?
答:回答4.1节和4.2节的内容即可




关于文中的SpringBatch概念,有兴趣的童鞋可以参考博主下面的文章:
SpringBatch概述

关于文中提到的ORM框架(MyBatis),有兴趣的童鞋可以参考博主下面的文章:
Mybatis源码解析之数据源和SQL构建

关于Spring FrameWork的官网学习,本文推荐一位博主,有兴趣的同学可以参考:
https://blog.csdn/qq_41907991


欢迎各位关注我的JAVAERS公众号,陪你一起学习,一起成长,一起分享JAVA路上的诗和远方。在公众号里面都是JAVA这个世界的朋友,公众号每天会有技术类文章,面经干货,也有进阶架构的电子书籍,如Spring实战、SpringBoot实战、高性能MySQL、深入理解JVM、RabbitMQ实战、Redis设计与实现等等一些高质量书籍,关注公众号即可领取哦。 欢迎大家加入JAVA后端讨论群。

更多推荐

Spring官网学习(一)概述