当前位置: 首页 > 后端技术 > Java

Spring生态介绍

时间:2023-04-01 15:13:18 Java

类别概述项目介绍主要项目社区项目保留项目最终总结概述做Java开发的人提到Spring,首先想到的是“IoC”、“AOP”、“SpringMVC”、“SpringSecurity”等术语,甚至有“没有Spring,就没有Java”的感觉。事实上,今天Spring已经不再是一个简单的编程框架。从最初的“SSH框架”到今天,Struts和Hibernate几乎从程序员的视野中消失了,但是Spring已经发展成为一个非常庞大和完整的生态。因此,除非特别指定为Spring生态中的一个特定框架,否则提及“Spring”应该是指整个Spring生态。说作为Java程序员只要精通Spring,也就掌握了Java开发的精髓,整个Spring生态系统包含了很多特定的框架,应用在特定的场景中,比如:“SpringFramework”、“SpringSecurity”、“SpringBoot””、“SpringCloud”等,其中“SpringFramework”框架是整个生态系统的核心。核心基础,其他框架需要依赖“SpringFramework”提供的基础功能,每个框架都有自己独立的代码仓库。项目描述SpringEcosystem下的项目分为3类:MainProjects、CommunityProjects和已经终止但仍保留的项目(ProjectsintheAttic)。最新的Spring生态项目列表参见:https://spring.io/projects。主要项目目前,Spring生态系统中有22个主要活跃项目。Spring生态简介1.SpringFrameworkSpringFramework项目是整个Spring生态的基础,包括Spring的核心功能,如:IoC、AOP、SpringMVC等,其他项目需要依赖SpringFramework。另外需要注意的是,SpringFramework项目包含多个子模块,如:spring-core、spring-beans、spring-context、spring-aop、spring-web、spring-webmvc等。事实上,SpringFramework项目是一个模块化的架构,模块之间存在依赖关系。我们在JavaWeb后台项目中使用最多的SpringMVC其实就是spring-webmvc这个模块,它与其他模块的依赖关系如下:aop和spring-web。Spring生态简介二、SpringBootSpringBoot是一个基于Spring的脚手架项目。默认集成嵌入式Tomcat,配置注解,支持快速集成第三方开发组件(如MyBatis),大大降低了Spring的使用门槛。内置了很多可以直接用于生产环境的功能,是目前开发微服务架构项目的不二之选。值得注意的是:很多刚接触SpringBoot的人都对它产生了误解。虽然SpringBoot可以用来快速开发一个健壮的、可以运行的项目,但它的核心和基础来自于SpringFramework。对于严重依赖Spring的开发者,首先应该了解SpringFramework。只要真正掌握了SpringFramework中各个模块的实现原理,在实际开发中使用SpringBoot遇到的问题就会迎刃而解。3.SpringCloudSpringCloud提供了一整套开发基于微服务架构的软件系统的工具,包括开发各种微服务组件的具体项目,如:SpringCloudConfig(配置中心)、SpringCloudNetflix(服务注册中心)、SpringCloudSleuth(服务调用监控)、SpringCloudGateway(服务网关)等。SpringCloud的基础是SpringBoot,可以大大简化基于SpringBoot开发微服务组件的过程。4.SpringCloudDataFlowSpringCloudDataFlow用于在云环境或K8S中构建基于微服务的实时或批量数据处理架构。具体来说,它支持一系列需要数据处理的场景,例如:ETL、数据导入/导出、事件流、预测分析等。5.SpringDataSpringData旨在提供一个基于Spring编程模型的数据访问API。它是一个数据访问框架的集合,包含多个具体的子模块,支持以不同的方式访问特定的数据库类型,如:SpringDataJDBC(使用JDBC访问关系型数据库)、SpringDataMongoDB(访问MongoDB数据库)、etc.该模块的功能类似于MyBatis等专门的ORM框架,在实际开发中可以根据需要灵活选择。6.SpringIntegrationSpringIntegration的目的是为构建企业级应用程序集成解决方案提供一个简单的模型。7.SpringBatchSpringBatch是一个轻量级的批处理框架,旨在开发对企业系统日常运行至关重要的强大的批处理应用程序。它支持事务管理,并提供基于网络的管理界面。8.SpringSecuritySpringSecurity是一个安全框架,用于实现身份验证和授权,以及访问控制。Java生态系统中还有另一个框架提供类似的功能:ApacheShiro。SpringSecurity依赖于SpringFramework,也就是说,如果要SpringSecurity,那么应用架构也必须基于SpringFramework,这就极大地限制了SpringSecurity的使用场景;相反,Shiro没有这样的限制,而且从项目架构上看,Shiro更简洁。当然,SpringSecurity提供了非常丰富的安全控制功能,在某些方面甚至比Shiro还要完善。相应的,掌握SpringSecurity的复杂度也比较大。因此,在应用中是否选择SpringSecurity需要根据实际需要来决定。9.SpringHATEOAS如果web应用是基于Spring框架开发的(即使用SpringMVC),那么可以直接使用SpringHATEOAS开发满足HATEOAS约束的RESTFul服务。这里需要了解一个单词缩写:“HATEOAS”。HATEOAS(Hypermediaastheengineofapplicationstate)是REST架构风格中最复杂的约束,是构建成熟REST服务的核心。它的重要性在于打破了客户端和服务端之间的严格契约,使得客户端更加智能和自适应,REST服务本身的演进和更新也变得更加容易。10.SpringRESTDocsSpringRESTDocs是一个文档工具,可以自动为REST风格的web服务生成相应的文档,将开发者从编写API文档中解放出来。11.SpringAMQPSpringAMQP项目旨在将核心Spring概念应用于基于AMQP的消息传递解决方案的开发。它为发送和接收消息提供了一个“模板”抽象。12.SpringMobileSpringMobile是SpringMVC的扩展,旨在简化移动Web应用程序的开发。SpringMobile可以检测当前请求的设备是PC、手机还是平板,用户设备是Android平台还是iOS平台,然后根据请求设备的不同返回适合该设备的视图。13.SpringForAndroid虽然官方的说法是SpringForAndroid旨在简化原始Android应用的开发,但实际上这有点太牵强了。SpringForAndroid为原生Android应用开发提供了两种支持:(1)提供REST客户端(2)支持访问安全API时的认证14.SpringWebFlowSpringWebFlow主要用于创建引导用户执行基于流程的应用场景就像“下一步”一样,该框架建立在SpringMVC之上。15.SpringWebServicesSpringWebServices用于开发WebService服务,类似的框架如:ApacheCXF、ApacheAxis2。16.SpringLDAPSpringLDAP是一个为基于Spring的应用程序使用LDAP(轻量级目录访问协议)协议的工具。17、SpringSessionSpringSession提供了管理用户Session信息的API和相应的实现。SpringSession使支持集群会话变得容易,而不依赖于特定于应用程序容器的解决方案。简单的说,传统的Session解决方案依赖于特定的容器(如:Tomcat),而SpringSession提供了独立于特定容器的Session解决方案。其实对于Tomcat容器,也有开源的Session集群方案:tomcat-redis-session-manager。18.SpringShellSpringShell用于开发基于命令行交互的应用程序。19.SpringFLOSpringFLO是一个JavaScript类库,是SpringCloudDataFlow中流构建器的基础。20、SpringKafkaSpringKafka用于Spring项目中与Kafka的交互。21.SpringStatemachineSpringStatemachine是开发者在Spring项目中使用状态机的框架,帮助开发者简化状态机的开发过程,使状态机结构更加层次化。22.SpringIOPlatform简单来说,SpringIOPlatform是一个对项目依赖进行统一版本管理的工具。本质是一个pom文件,记录了Spring项目和其他第三方库对应的版本信息。社区项目目前只有2个社区项目:SpringROO和SpringScala。1.SpringROO:这是一个旨在快速构建Java应用程序的开发工具包。2.SpringScala:支持在Scala中使用Spring框架。保留项目有些项目已经终止,但仍保留,无需重复。最后,Spring是一个提供许多有用的编程框架或工具集的生态系统。本文的目的不是详细介绍Spring生态的每一个项目,而是通过全面的梳理,对Spring生态有一个完整的认识。在实践中,您可以根据需要灵活选择相应的组件来使用。很明显,最流行的Spring项目是这四个:SpringFramework、SpringSecurity、SpringBoot和SpringCloud。如下图所示,再次对Spring生态做一个大概的总结。如果这篇文章对你有帮助,别忘了连打3个,点赞、转发、评论,我们下期再见!获取方式:点赞、评论、关闭~学习更多JAVA知识技能,关注并私信博主(666)