什么是Spring Boot以及为什么它是用于创建微服务的首选框架

为什么要使用Spring Boot创建微服务?

Spring Boot是Java领域众所周知的首选框架,用于创建Micro Services。 使用Spring引导框架,可以非常轻松地创建Java应用程序。 现在,我们将看到Spring启动框架的一些功能,这使其成为创建Micro Services的理想竞争者。

1.首先让我们看一下示例Spring app Maven文件。

样本Spring Maven文件

样本Spring Maven文件

如果您在上图中查看Maven XML文件,则Hibernate用作ORM框架, H2是内存数据库中的基础。 如果您在此处仔细观察,则需要在xml文件中显式指定所有数据库以及与ORM相关的依赖关系,尽管它随后又会由于Maven而解析其所有互连的依赖关系。 如果可以,我们掌握了一些框架/工具 ,因此不必指定以上依赖项,这样可以节省大量开发人员的时间和资源。 为了使此功能成为现实,Spring提出了一个名为Spring Boot的框架。

2.什么是Spring框架的@Conditional注释?

Spring4状态

Spring4状态

如果您查看上图中来自spring-boot-autoconfigure jar的HibernateJpaAutoConfiguration类,您会发现@Conditional Annotation(请参见箭头标记),它查找HibernateEntityManagerCondition

Spring4状态

Spring4状态

如果您查看上图中的HibernateEntityManagerCondition类,则只有在类路径中存在org.hibernate.ejb.HibernateEntityManagerorg.hibernate.jpa.HibernateEntityManager (请参见箭头标记)中的任一个时,您才会看到HibernateEntityManagerCondition被满足。 因此,只有满足以上条件,才会在HibernateJpaAutoConfiguration中自动配置bean。

3. Spring Boot的自动配置功能基于@Conditional注释。

SpringBootApplication类

SpringBootApplication类

如果您查看上图中用于注释所有Spring Boot应用程序Main类的SpringBootApplication类,您会注意到它具有@EnableAutoConfiguration Annotation(请参见箭头标记),它可以自动配置Bean。 这就是通过使用Spring Boot实现自动配置的所有魔力。 因此,一般而言,Spring Boot提供以下功能:

3.1轻松的依赖管理

Spring Boot Maven文件样本

Spring Boot Maven文件样本

如果您看上面的图片,您将看到以spring-boot-starter- *开头的依赖项列表 现在,让我们以spring-boot-starter-data-jpa依赖关系为例。 这将提取所有spring数据的jpa依赖关系。因此,我们无需手动在Maven xml文件中声明所有jpa依赖关系,例如HIbernate等。 因此,作为开发人员,我们可以节省大量时间和资源,无需手动执行依赖项管理

3.2自动配置

如上所示,我们不需要在spring bean xml文件中显式定义EntityManagerFactory bean定义等。如果在类路径中有oracle,Sybase之类的数据库驱动程序,它将通过查看datasource.properties自动创建一个Data Source bean文件放在类路径中,并将其与Sybase,Oracle等基础数据库连接。

3.3嵌入式Web服务器支持

如果您查看Spring Boot App Maven xml文件,其中已包含spring-boot-starter-web依赖项
这个Spring-boot-starter-tomcat依次添加spring-boot-starter-tomcat,然后从主类执行SpringApplication.run方法后,它将启动一个嵌入式的tomcat容器,该容器最终将在其上部署我们的spring boot应用程序。

4.为什么在创建微服务时使用spring boot?

正如我们已经看到的那样,通过其依赖项管理和自动配置进行的Spring Boot简化了并简化了应用程序的开发过程。 现在,我们了解了Spring Boot在创建微服务方面的确切帮助。 为了更好地理解它,让我们首先尝试从Wikipedia获得Micro Services的确切定义。

在计算中,微服务是相互独立的小型,独立进程,相互通信以形成利用与语言无关的API的复杂应用程序。 这些 服务   是小型积木,高度 分离   并专注于完成一项小任务,   促进 模块化   方法 系统 路技术。 微服务架构风格正成为构建持续部署的系统的标准。

现在,如果我们尝试理解以上内容,那就说明微服务是最小的业务流程,它们相互通信以形成复杂的业务应用程序。众所周知,业务流程非常敏捷,并且随着复杂性的变化不断发展和增长因此,理想情况下,要解决这种复杂性,应该提供一种技术方案,其中可以无缝集成业务变更和新流程,并且停机时间要少得多,这比使用Spring Boot创建微服务更好。看到了上面的优点。

5.结论

在本文中,我们已经看到了使用Spring Boot创建微服务的优势。 在本系列的下一部分中,我们将介绍Spring Boot Framework所需的其他组件,以创建健壮的微服务架构。

翻译自: https://www.javacodegeeks.com/2016/05/spring-boot-preferred-framework-creating-micro-services.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式开发有年龄限制吗_什么?!考教资有年龄限制了?2020年我还能考吗?...

近几年教师资格证越来越火爆越来越多的人都想报考,却又担心年龄问题,那么考教师资格证有年龄限制吗?下面小编就给大家解答一下这个问题:报考教师资格证是没有年龄限制的,只有学历限制。报考幼师教师资格证的考生必须是…

Python3的bytes/str之别

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节…

jframe透明_使JFrame透明

jframe透明首先创建一个带有滑块的框架,该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaul…

MyEclipse下Tomcat启动变慢的解决方法

项目忽然使用debug启动有时候会突然变得非常慢。不但启动慢,启动之后连打开项目标页面也很慢,是日常平凡的4,5倍。可以有下面的几种解决方法: 1、由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务…

Python关于Threading暂停恢复解决办法

我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后, 线程就属于失控状态. 不过, 我们可以自己实现这些. 一般的方法就是循环地判断一个标志…

stm32l4 外部中断按键会卡死_STM32学习之路-按键中断测试(外部中断)

void RCC_Config(void){SystemInit(); //系统时钟初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE | RCC_APB2Periph_G…

NetBeans Java EE技巧9:从数据库创建JSF应用程序

您需要非常快速地创建数据库前端吗? NetBeans IDE允许人们以极少的编码就非常快速地为一组数据库表开发JSF应用程序前端。 现在,本教程既是老歌,又是老歌……对于那些不了解它的人来说,值得再次提及。 首先,创建您的应…

[模板]树链剖分

用途 我想把一个本来是线性的东西放到树上做,维护路径或者是子树的各种性质,那就用树剖呗 它可以套线段树、树状数组、ST表(以及其他我不知道的) 做法 我们考虑把树分成一条条链,然后对每条链维护我们的数据结构&#…

sql server 2005单独添加mdf文件

我把原来的数据库分离后,直接把日志文件给干掉了。原来在SQL 2000里经常这么干,只用一个mdf就附加了。没想到sql2005居然不行。我试验了一圈 终于找到一个成功的方法。转载,供后来者参考。SQL2005 如何在没有日志文件的情况下如何恢复MDF数据…

低压抽屉柜常见故障处理方法_低压配电设备常见故障分析,处理办法介绍

低压配电线路作为配电网络中主要的一部分,在其运行的过程中直接影响着人民的生命财产安全。配电线路是电力输送的终端,对于提高电力质量有着至关重要的作用。但由于配电线路走径的复杂性,人为因素和设备因素,都会给低压配电设备造…

关于C语言中的'\?'和%%

关于C语言中的\?和%% 一、引语 我们知道C/C中有四个非字母的字符需要用转义字符来表示:单引号 , 双引号 " , 反斜杆 \ 和问号 ? 显然这是因为它们本身有特殊的含义,所以要用转义字符来表示他们自己,单引号用来表示单个字符&#xff0…

mockito 使用_用Mockito回答

mockito 使用在编写单元测试时 ,必须记住不要依赖于外部组件。 为了避免这种情况,我们使用了模拟框架,对我而言,最容易使用的是Mockito 。 在本文中,我们将看到在Mockito中使用的一种“高级”技术,可以使用…

jQuery常用操作

jQuery jQuery是一个轻量级的JS库&#xff0c;是一个被封装好的JS文件&#xff0c;提供了更为简便的元素操作方式&#xff0c;jQuery封装了DOM。 使用jQuery 引入jQuery文件 <scrtipt srcjquery-1.11.3.js> </script> 注意&#xff1a;引入必须放在其他jQuery操作之…

python tab和空格混用_我的 Python 编码规范

python 文件的组成为了便于描述&#xff0c;先上一个 demo#!/usr/bin/env python# -*- coding: utf-8 -*-"""通常这里是关于本文档的说明(docstring)&#xff0c;须以半角的句号、 问号或惊叹号结尾!本行之前应当空一行&#xff0c;继续完成关于本文档的说明如果…

Twitter创始人Jack Dorsey的每日必做和不做清单

Twitter创始人Jack Dorsey显然是这段时间以来技术界的中心人物&#xff0c;不仅发表了一系列的文章&#xff0c;而且一本反映Twitter早期岁月的书也即将出版。今天&#xff0c;他又在Y Combinator的Startup School上发表了讲话&#xff0c;不过在谈话中Dorsey回避了一切不必要及…

JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性

Java 8引入了JSR-308&#xff0c;它为Java语言添加了新的注释功能。 最重要的是&#xff1a;键入注释。 现在可以像下面这样设计怪物了&#xff1a; 比注解更疯狂的是类型注解。 在数组上。 谁认为这是有效的Java代码&#xff1f; pic.twitter.com/M9fSRRerAD — Lukas Eder&…

Linux NTP服务配置 for Oracle RAC

安装Oracle 11g RAC时&#xff0c;我们需要配置ntp服务。在使用虚拟机的情况下对于时钟同步方式的配置有很多种方式&#xff0c;可以使用vmware自带的时钟同步功能&#xff0c;也可以直接将本地的一个节点用作时间服务器。本文介绍直接配置ntp方式的时钟服务器。1、查看两节点的…

java字符编码方式总结

java字符编码方式总结一、概要在JAVA应用程序特别是基于WEB的程序中&#xff0c;经常遇到字符的编码问题。为了防止出现乱码&#xff0c;首先需要了解JAVA是如何处理字符的&#xff0c;这样就可以有目的地在输入/输出环节中增加必要的转码。其次&#xff0c;由于各种服务器有不…