1.Spring入门概述

1.Spring概述

1.1 Spring简介

Spring 被称为 J2EE 的春天,Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃肿和低效的开发模式。Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

1.2 Spring 和 Spring Framework 的历史

Spring是在2003年,作为对之前的复杂的J2EE规范而产生的。

有些人认为Spring和J2EE是竞争关系,实际上他们是互补的。

Spring的编程模块虽然并没有遵照J2EE的平台规范,但是它和如下的J2EE规范紧密的结合:

  • Servlet API (JSR 340)
  • WebSocket API (JSR 356)
  • Concurrency Utilities (JSR 236)
  • JSON Binding API (JSR 367)
  • Bean Validation (JSR 303)
  • JPA (JSR 338)
  • JMS (JSR 914)
  • 以及必要时用于事务协调的JTA / JCA设置。

同时,Spring框架也支持依赖注入(JSR 330)和通用注解(JSR 250)规范,开发人员可以自由选择使用。

在Spring框架5.0中,Spring至少要求Java EE 7以上(比如:Servlet 3.1+, JPA 2.1+),

同时提供了对于Java EE 8中新API在运行时的支持(Servlet 4.0, JSON Binding API),

这使得Spring可以全面支持多种服务器:Tomcat 8, 9, WebSphere 9,JBoss EAP 7。

Java EE在应用程序开发中的角色在随时间变化,

最开始,应用程序必须被部署成为一个服务。随着SPring boot的出现,

现在的应用程序可以在devops或者云环境中随意创建。

在Spring 框架5中,WebFlux应用程序甚至都不需要使用Servlet API,并且可以运行在类似于Netty这种非Servlet容器中。

Spring还将继续发展下去,除了Spring框架,Spring家族还有其他的一些非常棒的项目:

  • Spring Boot,
  • Spring Security,
  • Spring Data,
  • Spring Cloud,
  • Spring Batch等。

每个项目都有自己的代码库,问题跟踪机制和发版计划。如果想知道其他项目的具体情况可以参照:spring.io/projects。

1.3 Spring架构

1.Spring入门概述_第1张图片

以上是官方文档给的模块划分的讲解,我接下来会按照6个模块进行解读。


1.「核心容器 Core Container」

2.「数据访问与集成 Data Access/Integration」

3.「Web组件」

4.「切面编程和Instrumentation」

5.「Messaging 通信报文」

6.「Test 测试」

1.4 模块解读

1.4.1 核心容器 Core Container

由spring-core, spring-beans, spring-context, spring-context-support, spring-context-indexer和 spring-expression组成。

「各个模块的介绍」

模块名称 简介
spring-core 依赖注入IOC与DI的最基本实现。
spring-beans Bean工厂与Bean的装配。
spring-context 定义基础的Spring的Context上下文即IOC容器。
spring-context-support 对Spring IOC容器的扩展支持,以及IOC子容器。
spring-context-indexer Spring的类管理组件和Classpath扫描。
spring-expression Spring表达式语言。

1.4.2 数据访问与集成 Data Access/Integration

由spring-jdbc, spring-tx, spring-orm, spring-oxm和 spring-jms组成。

「各个模块的介绍」

模块名称 简介
spring-jdbc Spring 提供的JDBC抽象框架的主要实现模块, 用于简化Spring JDBC操作。
spring-tx Spring JDBC事务控制实现模块。
spring-orm 主要集成 Hibernate, Java Persistence API (JPA) 和 Java Data Objects (JDO)。
spring-oxm 将Java对象映射成XML数据,或者将XML数据映射成Java对象。
spring-jms Java Messaging Service能够发送和接收信息。

1.4.3 Web组件

由spring-web, spring-webmvc, spring-websocket, 和 spring-webflux组成。

「各个模块的介绍」

模块名称 简介
spring-web 提供了最基础Web支持,主要建立于核心容器之上, 通过Servlet或者Listeners来 初始化IOC容器。
spring-webmvc 实现了Spring MVC(model-view-Controller)的Web应用。 提供了最基础Web支持,主要建立于核心容器之上, 通过Servlet或者Listeners来初始化IOC容器。
spring-websocket 主要是与Web前端的全双工通讯的协议。
spring-webflux 一个新的非堵塞函数式 Reactive Web 框架, 可以用来建立异步的,非阻塞,事件驱动的服务。

1.4.4 切面编程和Instrumentation

由spring-aop, spring-aspects,spring-instrument组成。

「各个模块的介绍」

模块名称 简介
spring-aop 面向切面编程的应用模块,整合Asm,CGLIb、JDKProxy。
spring-aspects 集成AspectJ,AOP应用框架。
spring-instrument 提供类检测支持和类加载器实现,以在某些应用程序服务器中使用。

1.4.5 Messaging 通信报文

由spring-messaging组成。

「各个模块的介绍」

模块名称 简介
spring-messaging 从Spring4开始新加入的一个模块,主要职责是为Spring 框架集成一些基础的报 文传送应用。

1.4.6 Test 测试

由spring-test组成。

「各个模块的介绍」

模块名称 简介
spring-test 主要为测试提供支持的。

1.5. 官网地址

Spring官网地址:https://spring.io/

Spring文档地址:https://spring.io/projects/spring-framework#learn

1.7 Spring设计理念

当您学习 framework 时,重要的是不仅要知道它的作用,还要了解它遵循的原则。以下是 Spring Framework 的指导原则:

  • 在每个层级提供选择。 Spring 让你尽可能晚地决定设计决策。例如,你可以通过配置文件切换持久性提供程序而无需更改代码。对于许多其他基础设置和第三方 API 的整合是同样适用的。
  • Spring 非常灵活。没有固定的规则去规定怎么去设计,它从不同的角度支持广泛的应用程序需求。
  • 保持强大的向后兼容性。 Spring 版本的更迭和重大改变都是经过精心设计的。 Spring 支持精心选择的 JDK 版本和第三方 libraries,以便于维护依赖于 Spring 的 applications 和 libraries。
  • 关注 API 设计。 Spring 团队投入了大量的思考和时间来制作直观的 API,这些 API 可以支撑多个版本和时间的考验。
  • 为代码质量设定高标准。 Spring Framework 是重点强调有意义,最新和准确的javadoc。它是极少数可以宣称自己是代码和结构没有侵入,并且包与包之间没有循环依赖关系的项目之一。

1.6 Spring 框架的主要优点

(1)方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

(2)方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

(3)降低 Java EE API 的使用难度

Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

(4)方便程序的测试

Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

(5)AOP 编程的支持

Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

(6)声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无须手动编程。

1.8 反馈和贡献

我们建议使用stackoverflow来提问、诊断或调试问题,我们还有一个问题页面,列出了建议使用的标签。如果你相当确定Spring框架中存在问题,或者希望提出一个特性,请使用github issues。

如果你有一个解决方案或建议的修复方案,你可以在Github上提交pull请求。为了留痕和供将来参考,除了一些细小的问题外,我们需要在问题跟踪中提交一个ticket,用以进行讨论。

有关更多详细信息,请参考根目录下面的CONTRIBUTING文件。

1.9 入门

如果你刚开始使用Spring,那么你可能希望通过创建一个基于Spring Boot的应用程序来开始使用Spring框架。

Spring Boot提供了一种快速(和固定)的方法来创建一个可用于生产环境的基于Spring的应用程序。

它基于Spring框架,使用约定的方式而不是配置方式,旨在让你尽快启动和运行。

你可以使用start.spring.io生成一个基本项目,或者遵循“入门指南”,例如开始构建一个RESTful Web服务。

这些指南不仅易于理解,而且以任务为导向,而且大多数都基于Spring Boot。它们还涵盖了Spring产品组合中的其他项目,可以为你在解决特定问题时做参考。

它们还涵盖了Spring产品组合中的其他项目,可以为你在解决特定问题时做参考。

你可能感兴趣的:(Spring)