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

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

ccwgpt 2024-10-11 11:14 35 浏览 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-

相关推荐

谷歌正在为Play商店进行Material Design改造

谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...

企业网站免费搭建,定制化建站CMS系统

科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...

您需要的 11 个免费 Chrome 扩展程序

来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...

户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案

  在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。  从其结构设计来看,矩形框架虽主要为适配紧凑空...

一个基于NetCore开发的前后端分离CMS系统

今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...

本地Docker部署ZFile网盘打造个人云存储

前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...

pcfcms企业建站系统 免费+开源的企业内容管理系统

项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...

【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...

java开源cms管理系统框架PublicCMS后台管理系统

一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...

一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!

一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...

《搜神札记》:不应磨灭的惊奇(小说《搜神记》)

□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...

《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)

“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...

《助人技术》第一章助人引论内容框架

第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...

AI助手重构读后感写作流程:从提纲到完整性思考的转换

大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...

图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)

做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...

取消回复欢迎 发表评论: