Spring Boot:从炒作到成熟的基础技术?

栏目: Java · 发布时间: 7年前

内容简介:依赖注入是Spring的基本组件之一,也可以使用其他框架或自己完成。那么为什么要使用Spring?开发人员的生产力就是答案。Spring Framework的核心任务一直是提供依赖注入(DI)。Spring Boot还有助于管理依赖项,配置事务等等 - 但它只是达到目的一种手段而已。因此,开发人员项目不一定需要Spring也可以轻松开发纯依赖注入。或者,可以使用许多小框架中的一个。例如,可用于快速开发服务和部署HTTP端点的纯Web框架就是理想的选择,一个代表是关于“无容器”的支持Spring和Sprin

依赖注入是Spring的基本组件之一,也可以使用其他框架或自己完成。那么为什么要使用Spring?开发人员的生产力就是答案。

Spring Framework的核心任务一直是提供依赖注入(DI)。Spring Boot还有助于管理依赖项,配置事务等等 - 但它只是达到目的一种手段而已。因此,开发人员项目不一定需要Spring也可以轻松开发纯依赖注入。或者,可以使用许多小框架中的一个。例如,可用于快速开发服务和部署HTTP端点的纯Web框架就是理想的选择,一个代表是关于“无容器”的 Micronaut ,它不使用servlet容器,而是基于 Netty 的IO非阻塞。

支持Spring和Spring Boot的论点之一就是开发人员的工作效率。只要没有严重的理由反对,应该始终使用Spring Boot设置实现基于Spring的新应用程序。结果是应用程序框架始终看起来相同,并且可以进行类似配置。标准任务(例如配置数据库连接,无论是关系数据库还是图形数据库)都可以同样好地执行。这也适用于应用程序与其他服务的集成:声明启动程序的依赖项,并且可以在没有Spring Boot自动配置机制生成代码的情况下进行配置。

外部配置是另一项重要的生产力功能:如果默认值不合适,通常可以在外部进行调整。这些是属性或YAML格式的文件,环境变量,命令行参数和类似机制。除了诸如事务和缓存的跨平台处理,测试框架,框架内部事件系统和诸如Spring Data和集成之类的令人兴奋的项目之类的方面之外,这些机制是使用Spring的充分理由。

Spring Boot和微服务

关于微服务的炒作,长期以来被视为所有IT问题的灵丹妙药,正在逐渐减弱并屈服于更细微的观点。Spring Boot与术语微服务密切相关。这来自哪里?

Spring Boot的基础知识出现在微服务的最初繁荣阶段。Spring Boot经常与 Spring Cloud 一起使用。除此之外,Spring Cloud还包括部分开源Netflix堆栈,以及许多其他模块,这些模块极大地简化了创建分布式,基于云的方法的过程。

但是,Spring Boot也可以很好地构建经典的单片单体巨石应用程序或批处理过程,并且它不是一个微服务框架,因为它经常被误传。因此,没有银弹可以提前避免可能的问题,并在每种情况下都提供完美的架构。

SpringBoot集成

Spring Boot提供了各种项目(数据库,事件存储等)的集成。集成通常是节省资源的,并且可以通过所提到的 启动器机制 来提供。只有依赖项的声明才会激活自动配置,以便在此之前它不会对应用程序的资源消耗做出贡献。

Spring Boot项目可能非常小,但也非常大 - 取决于它所需的集成。这种灵活性在作者对项目中使用Spring Boot的估计中有所体现。典型的标准项目不存在,因为大多数域具有特殊的特征。但是,通常没有时间为需要交互的每个服务编写自己的集成。

核心开发

核心开发涵盖了促进Spring和Spring Boot实际工作的所有主题,还包括非功能性主题,例如对缓存的支持。

Spring DevTools加速了开发。它们允许在修改类文件后部分重新加载Spring上下文。之后,Spring Boot通常会快速启动,但重新加载仅更改的部件会更快。

配置处理器有助于将您自己的应用程序的配置外包给专用类:它生成可在所有主要IDE中读取的元数据。它们有助于编写application.properties或记录自己应用程序的可能配置。

缓存,方面和验证部分在Spring Framework本身中实现。但是,就像安全性和会话支持一样,它们只是Spring Boot自动配置的跨应用程序方面。

数据库

Liquibase和Flyway自动支持Spring Boot而无需进一步配置 - 它们与曾经配置的数据源一起工作。如果Spring Boot用于开发关系数据库微服务,那么问题就出现了:谁对数据库模式拥有主权?同样,Spring Boot在许多情况下提供了有用的工具。但是,该 工具 的有用应用由开发人员负责。

支持各种非关系数据库:Redis,Cassandra,Couchbase等,Spring Boot也支持像Neo4j这样的图形数据库和像Mongo或Elasticsearch这样的文档存储。通常,每个数据库都有单独的Spring Data模块。与JDBC / JPA环境一样,Spring Boot提供了配置URL和凭据的一致机制。

Web框架

Spring Web MVC和Spring WebFlux都是Spring Framework的一部分,两者是并行的。两者都是Spring Boot自动配置的面向请求的Web框架。对于面向组件的框架Vaadin,可以使用启动器。喜欢采用面向资源的方法的开发人员可以直接使用Spring Boot中的Jersey 2,而无需进一步配置走弯路。

在服务器上生成HTML内容并不流行。但模板引擎Thymeleaf,Freemarker,Mustache和Groovy模板可以直接与Spring Boot一起使用。

应用程序的实际附加值只有在进入生产操作时才会变得明显。诸如Actuator之类的SpringBoot启动模块对此有所帮助。它提供状态和健康端点的Web界面,并通过JMX提供有关应用程序的信息。 Micrometer 是一个收集系统,应用程序和系统指标的新项目。它可以通过Actuator进入应用程序并自动配置。或者,Micrometer可以独立于Spring Boot使用。

Spring Boot 2

Spring Boot 2中的一个主要特点是反应式编程模型。它们解决了有效使用资源的问题,尤其是线程。反应式编程不仅关系到HTTP请求的处理相关的,而且在数据库有关。

AkkaVert.xLagom 这样的框架处于最前沿,但Spring提供了许多公司建立的基础技术的优势。因此,它拥有庞大的用户群和全面的知识。随着新数据类型(如Mono和Flux)以及支持基础架构的顺利引入,Spring 5和Spring Boot 2已成功维护并将这些知识提升到一个新的水平。

Spring Boot 2发布半年后,Redis,MongoDB,Cassandra和Couchbase的响应式驱动程序已准备就绪。Reactive Cloud Streams提供与Kafka或RabbitMQ的响应式连接。

Spring Boot 2.1

2018年9月下旬在华盛顿的 SpringOne平台 并行 发布Spring Framework 5.1 。与此同时, Spring Boot 2.1也可用 。Spring Framework的特别亮点一方面是JDK 11的支持

通过 Spring Fu ,开发了一个孵化器项目,其中可以开发和测试新的功能性跳跃功能,特别是在Kotlin方向。其中一些函数编程已经流入Spring Framework。

也突出了 JUnit 5的 全面支持。与年初相比,Maven和Gradle的构建管理工具的显着改进支持,几乎没有理由在新的Spring项目中放弃JUnit 5。

Spring Boot 2.1完全基于现代容器构建,需要Tomcat 9和Undertow 2。同样,完全支持JDK 11,因此开发人员不再需要依赖 Java 8。在安全性方面,spring boot 2.1还实现了核心OAuth 2资源服务器支持。

旨在提高生产力的高级功能和新功能列表很长。例如,允许将不同的Java记录器组合在一起并配置。


以上所述就是小编给大家介绍的《Spring Boot:从炒作到成熟的基础技术?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Compilers

Compilers

Alfred V. Aho、Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman / Addison Wesley / 2006-9-10 / USD 186.80

This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised ......一起来看看 《Compilers》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具