作者:不乱于心丨不困于丶情 | 来源:互联网 | 2023-09-09 14:20
目录概述我的项目阐明次要我的项目社区我的项目保留项目最初总结概述做Java开发的人一提起Spring,首先在脑海中浮现出的就是“IoC”,“AOP”,“SpringMVC”,“SpringSecurit
目录
概述
我的项目阐明次要我的项目社区我的项目保留项目
最初总结
概述
做Java开发的人一提起Spring,首先在脑海中浮现出的就是“IoC”,“AOP”,“Spring MVC”,“Spring Security”等等这些名词,甚至大有“无Spring不Java”的感叹。
实际上,时至今日Spring已不再是一个简略的编程框架了,从最后的“SSH框架”倒退到明天,Struts和Hibernate都简直快要从程序员视线中隐没了,而Spring却倒退成了一个十分宏大且残缺的生态。
所以说,除非特地指明是Spring生态中的某个具体框架,否则提起“Spring”应该指的是整个Spring生态。
说句不夸大的话,Java程序员只有精通了Spring,也就把握了Java开发的精华。
在整个Spring生态中蕴含了许多利用在特定场景的具体框架,如:“Spring Framework”,“Spring Security”,“Spring Boot”,“Spring Cloud”等等,其中“Spring Framework”框架是整个生态的外围根底,其余框架都须要依赖“Spring Framework”提供的根底性能,而且每个框架都有本人独立的代码仓库。
我的项目阐明
Spring生态下的我的项目分为3类:次要我的项目(Main Projects),社区我的项目(Community Projects),曾经终止然而目前还保留的我的项目(Projects in the Attic)。
最新的Spring生态我的项目列表详见:https://spring.io/projects 。
次要我的项目
目前,Spring生态中蕴含22个次要沉闷的我的项目。
Spring生态简介
1.Spring Framework
Spring Framework我的项目是整个Spring生态的根底,蕴含了Spring最外围的性能,如:IoC,AOP,Spring MVC等,其余我的项目都须要依赖Spring Framework。
另外,还须要留神的是Spring Framework我的项目又蕴含多个子模块,如:spring-core,spring-beans,spring-context,spring-aop,spring-web,spring-webmvc等等。实际上,Spring Framework我的项目是一个模块化的架构,各模块之间又存在依赖关系。咱们在Java Web后盾我的项目中应用得最多的Spring MVC实际上就是模块spring-webmvc,它与其余模块的依赖关系如下所示:
Spring生态简介
显然,spring-webmvc模块依赖spring-context,spring-aop和spring-web。
Spring生态简介
2.Spring Boot
Spring Boot是一个开发基于Spring的脚手架我的项目,它默认集成了嵌入式Tomcat,配置注解化,反对疾速集成第三方开发组件(如MyBatis),大大降低了应用Spring的门槛,而且内置了许多能够间接用于生产环境的性能,是目前用于开发微服务架构我的项目的不二抉择。
值得注意的是: 许多人刚接触Spring Boot的人把它神话了,诚然应用Spring Boot能疾速开发一个强壮的、可间接运行的我的项目,然而它的外围和根底来源于Spring Framework。对于重度依赖Spring的开发人员,应该先去吃透Spring Framework,只有真正把握了Spring Framework中各个模块的实现原理,对于在理论开发中应用Spring Boot遇到的问题也就迎刃而解了。
3.Spring Cloud
Spring Cloud为开发基于微服务架构的软件系统提供了一整套工具汇合,其中蕴含了开发各个微服务组件的具体我的项目,如:Spring Cloud Config(配置核心),Spring Cloud Netflix(服务注册核心),Spring Cloud Sleuth(服务调用监控),Spring Cloud Gateway(服务网关)等等。
Spring Cloud的根底是Spring Boot,基于Spring Boot能够大大简化开发各微服务组件的流程。
4.Spring Cloud Data Flow
Spring Cloud Data Flow用于构建在云环境或K8S中基于微服务的实时或批数据处理架构,具体来讲就是反对一系列须要进行数据处理的场景,如:ETL,数据导入/导出,事件流,预测剖析等等。
5.Spring Data
Spring Data旨在提供一套基于Spring编程模型的数据拜访API,是一个数据拜访框架汇合,其中蕴含了多个具体的反对不同形式拜访特定数据库类型的子模块,如:Spring Data JDBC(应用JDBC形式拜访关系型数据库),Spring Data MongoDB(拜访MongoDB数据库)等。
这个模块的性能相似于MyBatis这样的专门的ORM框架,在理论开发中能够依据需要进行灵便抉择。
6.Spring Integration
Spring Integration的目标是提供一个简略的模型,用于构建企业级利用集成解决方案。
7.Spring Batch
Spring Batch是一个轻量级的批处理框架,旨在开发对企业零碎日常经营至关重要的弱小批处理应用程序。
反对事务管理,提供了基于Web的治理接口。
8.Spring Security
Spring Security是用于实现认证和受权,以及访问控制的平安框架,在Java生态与之提供相似的性能还有一个框架:Apache Shiro。
Spring Security依赖于Spring Framework,也就是说如果要Spring Security,那么利用架构也必须是基于Spring Framework的,这大大限度了Spring Security的应用场景;反之,Shiro就没有这样限度,而且从我的项目架构上Shiro更加简洁。当然,Spring Security提供了十分丰盛的安全控制的性能,在某些方面甚至比Shiro更加欠缺,与之对应的是把握的Spring Security的复杂度比拟大。因而,对于在利用中是否抉择Spring Security须要依据理论需要来决定。
9.Spring HATEOAS
如果Web利用基于Spring框架(即:应用了Spring MVC)开发,那么能够间接应用Spring HATEOAS来开发满足HATEOAS束缚的RESTFul服务。
这里须要了解一个单词简写:“HATEOAS”。HATEOAS(Hypermedia as the engine of application state)是REST架构格调中最简单的束缚,也是构建成熟REST服务的外围。它的重要性在于突破了客户端和服务器之间严格的契约,使得客户端能够更加智能和自适应,而 REST 服务自身的演变和更新也变得更加容易。
10.Spring REST Docs
Spring REST Docs是一个文档工具,用于为REST架构格调的Web服务主动生成相应的文档,这样能够解放开发者专门撰写API文档的工作。
11.Spring AMQP
Spring AMQP我的项目旨在将外围的Spring概念利用于基于AMQP的消息传递解决方案的开发中,它提供了一个“模板”的形象用于发送和接管音讯。
12.Spring Mobile
Spring Mobile是对Spring MVC的扩大,旨在简化挪动Web利用的开发。
Spring Mobile能够检测出以后申请应用的设施是PC、还是手机或者是平板以及用户设施是安卓平台还是iOS平台,而后依据申请设施的不同,返回适宜该设施的视图。
13.Spring For Android
尽管官网的说法是Spring For Android旨在简化原声Android利用的开发,但其实这个有点太过于牵强。
Spring For Android提供了2个对原生Android利用开发的反对:
(1)提供了一个REST客户端
(2)反对拜访平安API时的认证
14.Spring Web Flow
Spring Web Flow次要利用于须要在Web页面上创立疏导用户执行相似“下一步”这样的基于流程的利用场景,该框架构建于Spring MVC之上。
15.Spring Web Services
Spring Web Services用于开发WebService服务,相似的框架如:Apache CXF,Apache Axis2。
16.Spring LDAP
Spring LDAP是一个工具,用于为基于Spring的应用程序应用LDAP(Lightweight Directory Access Protocol)协定。
17.Spring Session
Spring Session提供了治理用户Session信息的API和对应实现,Spring Session使得反对集群会话变得简略,而不依赖于特定于应用程序容器的解决方案。
简略来讲,传统的Session计划依赖于特定的容器(如:Tomcat),Spring Session就是提供独立于特定容器的Session解决方案。
其实,针对Tomcat容器,Session集群化也有一个开源计划:tomcat-redis-session-manager。
18.Spring Shell
Spring Shell用于开发基于命令行交互的利用。
19.Spring FLO
Spring FLO是一个Javascript类库,是Spring Cloud Data Flow中流构建器的根底。
20.Spring Kafka
Spring Kafka用于在Spring我的项目中与Kafka交互。
21.Spring Statemachine
Spring Statemachine是一个为开发人员在Spring我的项目中应用状态机的框架,帮忙开发者简化状态机的开发过程,让状态机构造更加层次化。
22.Spring IO Platform
简略来说,Spring IO Platform是一个对我的项目依赖进行对立版本治理的工具。实质就是一个pom文件,它记录了Spring我的项目和其它第三方库对应的版本信息。
社区我的项目
社区我的项目目前只有2个:Spring ROO,Spring Scala。
1.Spring ROO:这是一个开发工具包,旨在疾速构建一个Java利用。
2.Spring Scala:反对在Scala中应用Spring框架。
保留项目
某些我的项目曾经终止了,然而依然保留着,不用赘述。
最初总结
Spring是一个生态系统,提供许多有用的编程框架或工具集。
本文的目标不在于具体介绍Spring生态的每一个我的项目,而是通过一个全面的整顿,对Spring生态有一个残缺的意识,在理论中依据须要灵便抉择对应的组件来应用即可。
能够明确的是,当下最为风行的Spring我的项目是这4个:Spring Framework,Spring Security,Spring Boot,Spring Cloud。
如下图所示,再次对Spring生态做一个概括性总结。
如果本文对你有帮忙,别忘记给我个3连 ,点赞,转发,评论,
咱们下期见!答案获取形式:已赞 已评 已关~
学习更多JAVA常识与技巧,关注与私信博主(666)