百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

揭秘 Java帝国的全能家族——Spring的成王之路

ccwgpt 2024-10-11 11:14 32 浏览 0 评论


很久很久以前,古老的 Java 编程帝国里降生了一个孩子,名为 Spring,它是 Java 帝国最小的王子,同时也是 Java 帝国期待已久的孩子。



它还有三个哥哥,分别是大哥 JSF、二哥 Struts 和三哥 Hibernate,它们一起为JAVA 帝国的编程事业添砖加瓦。


相比三个哥哥的术有术攻,促使 Spring 降生有两个重要原因:

1、使 Java EE 开发更加容易;

2、解决企业应用开发的复杂性而创建,但又不仅限于服务器端的开发,而是所有让 Java 应用都可以从 Spring 中受益。


粉雕玉琢的 Spring 小王子备受 Java 帝国人民的喜爱,以往的需要几个大王子一并合作的项目,Spring 小王子一个人便可完成,它让开发变得更加简单高效。



他是一个基于 POJO (简单 Java 对象)的轻量级框架,最大的特点是其依赖注入方式,在 Spring 中创建 bean 和对象的职责交给了 Spring 框架来统一管理、完成和维护。


Spring 小王子的成长轨迹


2004年,Spring 1.0,彻底改变了开发企业级 Java 应用程序的方式。


2006年,Spring 2.0,在配置里使用自定义的XML命名空间,更小、更简单易懂的配置文件让Spring本身更便于使用。


2007年,Spring 2.5,面向注解的依赖注入模型(即@Component和@Autowired注解),以及面向注解的Spring MVC编程模型。不用再去显式地声明应用程序组件了,也不再需要去继承某个基础的控制器类了。


2009年,Spring 3.0,一套基于Java的全新配置,它能够取代XML,一系列以@Enable开头的注解进一步完善了这一特性,可以写出一个没有任何XML配置的Spring应用程序。


2013年,Spring 4.0,对条件化配置提供了支持,根据应用程序的Classpath、环境和其他因素,运行时决策将决定使用哪些配置,忽略哪些配置。那些决策再也不需要在构建时通过编写脚本确定了(以前会把选好的配置放在部署的包里)。


2017年,Spring 5.0,主要功能是对反应式编程的支持,包括 Spring WebFlux。这是一个全新的反应式 Web 框架, 借鉴了 Spring MVC 的编程模型,允许开发人员创建伸缩性更好且耗用更少线程的 Web 应用程序。


从带着使命感诞生到每个阶段的成长,Spring 小王子为 Java 帝国奉献了一切,从来没有让程序员们失望过。


Spring 小王子核心秘密武器


自诞生以来,Spring 小王子便鼓励 Java 帝国的人民使用模块化的方式进行编程,他使用一个核心容器和很多个其他的模块来搭配,继而满足 Java 帝国建设各种各样的需求。


核心容器


这是 Spring 框架最基础的部分,它提供了依赖注入(DependencyInjection)特征来实现容器对Bean的管理。这里最基本的概念是 BeanFactory ,它是任何 Spring 应用的核心。

BeanFactory 是工厂模式的一个实现,它使用 IoC 将应用配置和依赖说明从实际的应用代码中分离出来。


Spring核心容器包含了以下模块:


应用上下文(Context)模块


核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了BeanFactory的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持。

另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持。


Spring的AOP模块


Spring在它的AOP模块中提供了对面向切面编程的丰富支持。这个模块是在Spring应用中实现切面编程的基础。为了确保Spring与其它AOP框架的互用性,Spring的AOP支持基于AOP联盟定义的API。

AOP联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性。通过访问他们的站点,你可以找到关于AOP联盟的更多内容。

Spring的AOP模块也将元数据编程引入了Spring。使用Spring的元数据支持,你可以为你的源代码增加注释,指示Spring在何处以及如何应用切面函数。


JDBC抽象和DAO模块


使用JDBC经常导致大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接。Spring的JDBC和DAO模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。

这个模块还在几种数据库服务器给出的错误消息之上建立了一个有意义的异常层。使你不用再试图破译神秘的私有的SQL错误消息!

另外,这个模块还使用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务。


对象/关系映射集成模块


对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。

Spring的事务管理支持这些ORM框架中的每一个也包括JDBC。


Spring的Web模块


Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。

例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。


Spring的MVC框架


Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。

它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。


如果作为一个整体,Spring 小王子的这些模块已经为 Java 帝国提供了开发企业应用所需的一切,但 Java 人民可以自由地挑选适合自己的应用的模块而忽略其余的模块,而不必将所有的模块完全应用。


基于上面的这些核心模块, Spring 小王子还提供了很多其他的有用的模块,用于构建健壮的基于 Java 帝国的应用程序:

数据库访问模块、事务管理模块、安全模块、Spring集成模块、 批处理模块、消息模块、社交插件等。


Spring 小王子开枝散叶


经过多年发展, Spring 家族现在已枝繁叶茂,Spring 更是成为 Java 帝国生态系统中最主要的框架,其中Spring 5 的采用率约为 2/3。


家族的工作涵盖了 Java 帝国的J2EE开发、依赖维护、安全批处理、统-数据库访问、大数据、消息处理、移动开发以及微服务等众多领域。


在 Spring 小王子的孩子里面,最耀眼的莫过于 Spring Framework 、 Spring Boot 和 Spring Cloud 这三个小辈。


Spring Framework

◆ 强大的基于 JavaBeans 的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易;


◆ 一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂;


◆ 数据库事务的一般化抽象层,允许插件式事务管理器,简化事务的划分使之与底层无关。


◆ 内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境;


◆ JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量;


◆ 以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成;


◆ 灵活的基于核心 Spring 功能的 MVC 网页应用程序框架;


◆ 提供诸如事务管理等服务的面向方面编程框架。


Spring Framework 就像是 Spring 家族的树根,使 Spring 家族得以在Java开发领域屹立不倒的根本原因,它的目标就是帮助 Java 帝国的开发人员开发出好的系统;


Spring Boot

◆ 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;


◆ 内嵌Tomcat或Jetty等Servlet容器;


◆ 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;


◆ 尽可能自动配置Spring容器;


◆ 提供准备好的特性,如指标、健康检查和外部化配置;


◆ 绝对没有代码生成,不需要XML配置。


Spring Boot 相当于 Spring 家族的树干,它的目标是简化新 Spring 应用的初始搭建以及开发过程,致力于在蓬勃发展的快速应用开发领域成为领导者;


Spring Cloud

◆ Spring Cloud Netflix:是对Netflix开发的一套分布式服务框架的封装;


◆ Spring Cloud Config:将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件;


◆ Spring Cloud Bus:分布式消息队列,是对Kafka,MQ的封装;


◆ Spring Cloud Security:对Spring Security的封装,并能配合Netflix使用;


◆ Spring Cloud Zookeeper:对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用;


◆ Spring Cloud Eureka:Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装。


在近几年中,Java 帝国多了一个流行的概念——微服务,帝国人民普遍认为它能解决传统的单体架构应用所带来的顽疾(如代码维护难、部署不灵活、稳定性不高、无法快速扩展等等), 以至于涌现出了一大批帮助实现微服务的工具。


而在它们之中,Spring Cloud 无疑是最令人瞩目的,不仅是因为 Spring 家族在 Java 帝国开发中的重要地位,更是因为 Spring Cloud 提供了一整套微服务实施方案 ,其中包括服务发现、分布式配置、客户端负载均衡、服务容错保护、API网关、安全、事件驱动、分布式服务跟踪等工具,全面地解决了 Java 帝国人民在微服务开发领域所遇到的难点问题。


Spring Cloud 就如同是 Spring 家族这棵参天大树在 Java 帝国的微服务开发领域所结出的硕果。


Spring 家族初心不变


Spring 家族之所以能够在技术不断更新换代的 IT 领域长盛不衰,并且引领技术发展的潮流,是因为它一直没有偏离最初的目标——根据技术的发展,不断优化和革新,让 Java 应用的开发更加便利和高效


从XML配置、注解配置,再到Spring Boot的自动化配置,Spring 在不断简化,开发人员需要做的额外工作越来越少。


Spring 的这种基因代代相传,在可以预见的未来,Spring 及其家族产品依然是值得花时间投资学习的技术。


Spring 小王子和它的孩子们,会一直陪伴在每个 Java 帝国人民的身边,共同进步、共同成长。


Spring实战 第5版


作者: [美]克雷格·沃斯(Craig Walls)

译者: 张卫滨


本书是一本经典而实用的畅销 Spring 学习指南。第5 版涵盖了 Spring 5.0 和Spring Boot 2.0 里程碑式的更新。全书分为5 个部分,共19 章。第1 部分(第1~5 章)涵盖了构建 Spring 应用的基础话题。第2 部分(第6~9章)讨论如何将Spring 应用与其他应用进行集成。第3 部分(第10~12 章)探讨Spring对反应式编程提供的全新支持。第4 部分(第13~15 章)拆分单体应用模型,介绍SpringCloud 和微服务开发。第5 部分(第16~19 章)讨论如何为应用投入生产环境做准备以及如何进行部署。


本书既适合刚开始学习Spring Boot 和Spring 框架的Java 开发人员快速上手,也适合经验丰富的Spring 开发人员学习Spring 的新特性,尤其适用于企业级Java 开发人员。


Spring Cloud微服务和分布式系统实践


作者: 杨开振


《Spring Cloud微服务和分布式系统实践》从企业的真实需求出发,理论结合实际,深入讲解Spring Cloud微服务和分布式系统的知识。


书中既包括Spring Cloud微服务的各类常用组件的讲解,又包括分布式系统的常用知识的介绍。Spring Cloud组件方面主要讲解服务注册和服务发现(Eureka)、服务调用(Ribbon和OpenFeign)、断路器(Hystrix和Resilience4j)、网关(Zuul和Gateway)、配置(Config)、全链路追踪(Sleuth)、微服务的监控(Admin)等;分布式系统方面主要讲解分布式数据库、分布式缓存、会话和权限以及发号机制等。


本书的实践部分通过Apache Thrift讲解了远程过程调用(RPC)在分布式系统中的应用,并且分析了处理高并发的一些常用方法,最后还通过一个简单的实例讲解了微服务系统的搭建。本书适合想要学习Spring Cloud微服务、分布式系统开发的各类Java开发人员阅读,包括初学者和开发工程师。本书对架构师也有一定的帮助。


Spring学习指南 第4版

作者: [印度]J. 夏尔马(J. Sharma)

阿西施·萨林(Ashish Sarin)

译者: 周密


Spring 框架是以简化J2EE 应用程序开发为特定目标而创建的,是当前最流行的Java 开发框架。本书主要介绍Beans 的配置、依赖注入、定制bean、基于Java 的容器、AOP、Spring Data、Spring MVC 等内容。


本书基于非常适合构建JavaWeb 微服务框架的Spring 5 编写,涵盖Java 的函数式编程、RxJava 2 的反应式编程、用Spring WebFlux、Spring Data 和Spring Security 开发反应式RESTful Web 服务等内容。本书适合Web 开发者和想使用Spring 的初学者参考,也可供对Web 开发和Spring 感兴趣的读者参考。


深入浅出Spring Boot 2.x


作者: 杨开振


Spring框架是Java EE开发的事实标准,而Spring Boot是业界最流行的微服务开发框架。


本书从一个最简单的工程开始讲解Spring Boot企业级开发,其内容包含全注解下的Spring IoC和AOP、数据库编程、数据库事务、NoSQL技术、Spring MVC、Spring 5新一代响应式框架WebFlux、REST风格和Spring Cloud分布式开发等。


Spring微服务实战


作者: [美]约翰?卡内尔(John Carnell)

译者: 陈文辉


本书以一个实际项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将该项目一步一步地从单体架构重构成微服务架构,最终将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并最终自动部署到云环境(亚马逊云)中。


Spring源码深度解析 第2版


作者: 郝佳


本书从核心实现和企业应用两个方面,由浅入深、由易到难地对Spring源码展开了系统的讲解,包括Spring的设计理念和整体架构、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP、数据库连接JDBC、整合MyBatis、事务、SpringMVC、远程服务、Spring消息服务等内容。


-END-

相关推荐

Spring WebFlux vs. Spring MVC(springboot是什么)

背景随着异步I/O和Netty等框架的流行,响应式编程逐渐走入大众的视野。但是,响应式编程本身并不是太新的概念,这个术语最早出现在1985年DavidHarel和AmirPnue...

深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理

适配主流框架如果不借助Sentinel提供的适配主流框架的模块,则在使用Sentinel时需要借助try-catchfinally将要保护的资源(方法或代码块)包起来,在目标方法或代码块执行之前,调...

Spring MVC 底层原理深度解析:从请求到响应的全链路拆解

一、Servlet容器与DispatcherServlet的启动博弈1.Tomcat初始化阶段java//Tomcat初始化流程StandardContext#startInterna...

改造总结之传统SpringMVC架构转换为SpringBoot再到集群

改造出发点,是基于现在服务都在向上云的目标前进,传统SpringMVC难以满足项目持续构建、服务节点任意扩展的需求,所以开始了历史项目的改造。项目改造考虑的主要是兼容以前的业务代码,以及session...

SpringBoot3 整合 Spring MVC 全解析:开启高效 Web 开发之旅

在当今的JavaWeb开发领域,Spring框架家族无疑占据着重要的地位。其中,SpringBoot3和SpringMVC更是开发者们构建强大、高效Web应用的得力工具。今天,...

一文读懂SpringMVC(一文读懂!残疾人低保边缘家庭能领的超实用福利政策)

1.SpringMVC定义1.1.MVC定义Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View(视图):是应用程序中处理数据显示的部分。通常...

69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)

SpringMVC框架的注解为Web开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了Web应用程序开发的各个方面。它们不仅简化了编码工作,...

Spring MVC工作原理:像拼积木一样构建Web应用

SpringMVC工作原理:像拼积木一样构建Web应用在Java的Web开发领域,SpringMVC无疑是一个让人又爱又恨的存在。它像一位神通广大的积木搭建大师,将一个个分散的功能模块巧妙地拼接在...

5千字的SpringMVC总结,我觉得你会需要

思维导图文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary概述SpringMVC再熟悉不过的框架了,因为现在最火的...

SpringMVC工作原理与优化指南(springmvc工作原理和工作流程)

SpringMVC工作原理与优化指南在现代Java开发中,SpringMVC无疑是构建Web应用程序的首选框架之一。它以其优雅的设计和强大的功能吸引了无数开发者。那么,SpringMVC究竟是如何工作...

Spring MVC框架源码深度剖析:从入门到精通

SpringMVC框架源码深度剖析:从入门到精通SpringMVC框架简介SpringMVC作为Spring框架的一部分,为构建Web应用程序提供了强大且灵活的支持。它遵循MVC(Model-V...

3000字搞明白SpringMVC工作流程、DispatcherServlet类、拦截器!

SpringMVC基础虽然SpringBoot近几年发展迅猛,但是SpringMVC在Web开发领域仍然占有重要的地位。本章主要讲解SpringMVC的核心:DispatcherServlet类...

多年经验大佬用2000字透彻解析SpringMVC的常用注解及相关示例

SpringMVC注解SpringMVC框架提供了大量的注解,如请求注解、参数注解、响应注解及跨域注解等。这些注解提供了解决HTTP请求的方案。本节主要讲解SpringMVC的常用注解及相关示例...

知乎热议:如何成为前端架构师,赚百万年薪?

作者|慕课网精英讲师双越最近有一条知乎热议:从一个前端工程师,如何根据目标,制定计划,才能快速进阶成为前端架构师?不久之前我参与了一次直播,讲到了自己对于Web前端架构师的理解。架构师这个角色...

学习笔记-前端开发架构设计(前端架构设计方案)

前端开发的技术选项主要包含以下几点,下面对一些名词概念的解释做了笔记:1、分层架构:把功能相似,抽象级别相近的实现进行分层隔离优势:松散耦合(易维护,易复用,易扩展)常见分层方式:MVC,MVVM2、...

取消回复欢迎 发表评论: