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

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

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

样本Spring Maven文件

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

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

Spring4状态

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

Spring4状态

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

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

SpringBootApplication类

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

3.1轻松的依赖管理

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

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

  1. Spring Boot与Docker(一):微服务架构和容器化概述

    本文讲的是Spring Boot与Docker(一):微服务架构和容器化概述,[编者的话]本篇是<使用Spring Boot和Docker构建微服务架构>系列四部曲的第一篇,本篇将会对我们 ...

  2. spring boot集成ehcache 2.x 用于hibernate二级缓存

    spring boot集成ehcache 2x 用于hibernate二级缓存 项目依赖 Ehcache简介 hibernate二级缓存配置 ehcache配置文件 ehcache事件监听 注解方式使 ...

  3. Spring Boot(5)一个极简且完整的后台框架

    一个完整的极简后台框架,方便做小项目的时候可以快速开发. 这里面多贴图片和代码,做个参考吧,代码可以下载下来自己看看,里面这套后台模板不错,喜欢的拿去. 先放几张图 项目介绍 SpringBoot,我 ...

  4. 微服务pact测试框架_消费者驱动的Pact和Spring Boot测试

    微服务pact测试框架 最近,我的一位同事偶然发现了Pact.io ,我们目前的应用程序已扩展到 50多种服务,并且我们开始出现一些集成测试失败和脆弱的开发/验收测试环境. 因此,我们决定研究尝试与此 ...

  5. JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台,基于Spring Boot 2.7

    SpringBlade微服务开发平台 完整代码下载地址:JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台 采用前后端分离的模式,前端开源两个框架:Sword (基 ...

  6. 【本人秃顶程序员】使用Spring Cloud Stream和RabbitMQ实现事件驱动的微服务

    ←←←←←←←←←←←← 快!点关注 让我们展示如何使用Spring Cloud Stream来设计事件驱动的微服务.首先,Spring Cloud Stream首先有什么好处?因为Spring AM ...

  7. 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (中)

    本文承接上文<从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (上)> ...

  8. 从0到1手把手搭建spring cloud alibaba 微服务大型应用框架(十五) swagger篇 : gateway 集成swagger 与 knife4j实现在线api文档并嵌入到自己项目内

    背景 我们日常开发中基本都是协同开发的,当然极个别的项目整体前后端都是一个人开发的,当多人协作时,尤其是前后端人员协同开发时 必然会面临着前端需要了解后端api接口的情况,两个选择,提前设计好文档,然 ...

  9. (十一)java版spring cloud+spring boot+redis多租户社交电子商务平台- commonservice-sso服务搭建(一)...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservi ...

最新文章

  1. cheked复选框返回值的时候选中
  2. Numpy自定义dtype的一个使用误区
  3. Java编程基础-变量
  4. Windows下各个盘中的文件夹属性变为隐藏,怎么取消隐藏属性
  5. matlab 涡轮流量计_秦皇岛卫生级流量计定制
  6. SQL Server 查询表备注信息的语句
  7. springcloud(七)-Feign声明式REST调用
  8. Codeforces Round #500 (Div. 2) C.Photo of The Sky
  9. Muduo 网络编程示例之三:定时器
  10. hdu 5977 Garden of Eden(点分治+状压)
  11. ETL的增量抽取机制
  12. python与java区别-Java与Python到底有什么区别和共同点详细对比
  13. python中常用的函数有哪些_python里常用的函数类型
  14. 190125每日一句
  15. java multibox_月光软件站 - 编程文档 - Java - Struts 中 Multibox 的用法
  16. FCKeditor编辑器详解
  17. RMAN数据库完全备份和恢复
  18. redis集群异常 — redis.clients.jedis.exceptions.JedisConnectionException: no reachable node in cluster
  19. 植物大战僵尸通关进度
  20. 经典的机器学习200道面试题及答案

热门文章

  1. 服务器性能指标(一)——负载(Load)分析及问题排查
  2. mysql语句性能开销检测profiling详解
  3. Maven精选系列--过滤不同环境配置文件
  4. 笑脸喜迎新同学,热情送给新伙伴
  5. 下午带着几个同学打了两节课的牌~
  6. 激动的时刻,终于成啦~
  7. java中input表单中的type=date返回类型【切记】
  8. Sentinel控制台
  9. ArrayList基操
  10. git删除本地分支、删除远程分支 复制分支