细说Spring框架之核心01-概述

细说Spring框架之核心01-概述

官网:https://spring.io/projects/spring-framework
文档:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/index.html

目录

Spring框架是什么

Spring框架是整个Spring生态的核心基础,其他Spring生态项目都需要使用Spring框架提供的核心功能,如:IoC,AOP,配置注解化等等。
因此,深入学习并理解Spring框架的原理是掌握Spring其他生态项目的关键。
Spring框架提供了构建Spring生态的基础功能,具体可以划分为:

  • 核心功能:IoC容器,事件处理,资源管理,国际化支持,校验,数据绑定,类型转换,Spring表达式语言(SpEL),AOP
  • 测试:单元测试,集成测试,Spring MVC测试框架
  • 数据访问:事务管理,DAO,JDBC,对象关系映射(ORM),对象XML映射(Object-XML Mapping)
  • Web Servlet:Spring MVC,REST客户端,WebSocket
  • Web Reactive:Spring WebFlux,WebClient
  • 服务集成: 远程调用(RMI)及WebService,JMS,AMQP,JCA,JMX,邮件,任务指定和调度,缓存抽象
  • 语言支持:Kotlin,Apache Groovy

Spring框架通过一个组件化的架构实现上述功能,包含如下模块:

  • spring-core,spring-beans,spring-context,spring-aop,spring-aspects,spring-expression:框架基础,提供了IoC,AOP,Spring表达式的支持
  • spring-test:Spring提供的Mock测试框架
  • spring-jdbc,spring-orm,spring-tx:数据访问,事务管理
  • spring-web,spring-webmvc,spring-websocket:一个构建于Servlet API之上的Web框架,这也是Spring框架很早就支持的,Spring框架也因此开始流行
  • spring-webflux:Spring对响应式技术栈的支持
  • spring-jms,spring-messaging:服务集成

细说Spring框架之核心01-概述

更多Spring框架模块详情参见:https://github.com/spring-projects/spring-framework

为什么要使用Spring框架

对于编程框架而言,其主要目的在于提高编程效率,框架对一些底层的、重复性的功能进行组件化封装,便于快速开发应用层软件系统。
因此,在不同的编程领域或语言平台,都会存在这样或那样被称为“框架”的东西,如:Netty专注于网络编程,MyBatis专注于ORM,Shiro专注于认证授权。
Spring框架也不例外,它作为一个Java平台的编程框架,实现了对Servlet编程的封装,支持面向切面编程,支持数据访问及ORM映射等,这些功能有助于我们可以快速地开发出一个能稳定运行的服务。

如何使用Spring框架

Spring框架最核心的基础是IoC,基于IoC支持AOP、封装Servlet、实现数据访问和ORM映射等等。
可以说,Spring框架涵盖了丰富多样的应用场景,我们不仅仅需要学习它提供的功能,还要掌握每个功能背后实现的原理,以及其中使用的通用软件开发原则和设计模式。Spring框架中很多非常实用的功能是通过底层JDK提供的方法实现的,比如:注解、动态代理等等,非常值得借鉴和学习。
至于如何使用Spring框架,需要根据实际的应用需求,引入对应模块的依赖即可。例如:如果只需要使用Spring框架的核心功能,只需要在项目的pom文件中添加“spring-context”依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>

显然,“spring-context”模块依赖了其他4个基础模块:“spring-aop”,“spring-beans”,“spring-core”和“spring-expression”。
细说Spring框架之核心01-概述

【参考】
https://spring.io/projects

相关推荐