用 Spring boot 简单搭建一个微服务项目

5bfc1eab09e11dc2e977b09fa016dfb7.gif

作者 | 桃花键神

来源 | CSDN博客

前言:

工欲善其事,必先利其器。在对Spring Cloud各部分组件进行具体介绍之前,我们会对Spring Cloud微服务的基础Spring Boot进行介绍。Spring Boot是Spring一套快速配置开发的脚手架,可以基于Spring Boot快速集成开发单个Spring应用。

Spring Cloud是基于Spring Boot实现的云应用开发工具,很大一部分实现依赖于SpringBoot。可以说Spring Boot是整个Spring Cloud微服务架构的服务基础。

7ae3a658592f71607783953b36fd6805.png

Spring boot 介绍

在构建第一个微服务之前,我们先了解一下Spring boot。

Spring框架功能很强大,但是就算是一个很简单的项目,开发者也需要进行大量的配置工作,因此在Spring 4.0之后出现了Spring Boot框架,它的作用很简单,就是帮助开发者自动配置Spring的相关依赖。Spring Boot是Pivotal团队于2013年推出的全新项目,主要用来简化Spring开发框架的开发、配置、调试和部署工作,同时在项目内集成了大量易于使用且实用的基础框架。Spring Boot使用了特殊的方式来进行初始化配置,这使得开发者不需要额外定义样板化的配置。

09b0613f23ce829ea80373132a18b0fd.png

Spring boot 与Spring Cloud

Spring Cloud基于Spring Boot框架开发应用,为微服务开发中的架构问题提供了一整套的解决方案:如服务注册与发现、服务消费、服务容错、API网关、分布式调用追踪和分布式配置管理等。

Spring Cloud与Spring Boot的联系如下:

  • Spring Boot是Spring的一套快速配置脚手架,可以基于Spring Boot快速开发单个服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具。

  • Spring Boot专注于快速、方便集成单个服务,Spring Cloud是关注全局的服务治理框架。

  • Spring Boot使用了约定优先于配置的理念,有很多集成方案已经设置好,减少了用户的配置,Spring Cloud很大一部分是基于Spring Boot实现的。

  • Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖与被依赖的关系。

357d503607198bf8c4b378baa74e7aaa.png

Spring boot 核心特性

从本质上来讲,Spring Boot是一个框架中的框架,它专注于框架的整合,让基础的框架能够更好地集成使用。它简化了集成过程中的模板化配置,提供了本应该由开发者自身去实现的Spring Bean配置,从而使开发者能够从繁琐的配置中解放出来,更专注于应用程序的业务逻辑。

SpringBoot所具备以下特性:

  • SpringApplication:提供一种简便的方式来引导启动Spring应用程序,通过main的方式启动应用。

  • 外部化配置(External Configuration):通过外部化配置的方式,可以让开发者自定义相关配置以使相同的应用运行于不同的环境中。

  • Profiles:Spring Profiles可以将配置文件隔离成不同的模块,并且使这些模块中的配置只在特定的环境中生效。

  • 日志(Logging) : Spring Boot完善的日志系统更利于开发者调试和监控应用程序。·MVC: Spring Web MVC框架,使得开发者得心应手地搭建Web后端应用。

  • 嵌入式容器(Embedded Containers):支持内置的Tomcat、Jetty和Undertow服务器,使得应用程序通过内嵌的服务器容器一键启动。

  • SQL:提供了使用SQL数据库的广泛支持,从直接通过JDBC(JdbcTemplate)访问数据库到通过对象关系映射框架(如Hibernate)访问数据库等等。

  • NoSQL:集成了大量的框架来提供使用NoSQL数据库的技术,支持Redis、MongoDB、Neo4j、Elasticsearch、Solr Cassandra、Couchbase和LDAP等诸多NoSQL数据库,这些NoSQL数据库的使用都可以由Spring Boot提供相关的自动配置实现。

  • 消息系统(Message)︰提供了对消息系统的广泛支持,包括JMS、RabbitMQ.Kafka和WebSocket等。

  • 测试(Testing)︰提供了一系列实用工具和注解,以帮助开发者测试应用程序。

  • 自动配置(Auto-Configuration):自动配置不仅减少了Spring框架中本该由开发者自主实现Bean相关配置,也使得开发者具备根据自己的业务需要为应用程序定义各种特定Bean的能力。

  • 监控(Monitoring) : Spring Boot的监控能够使开发者更好地掌控应用程序的运行状态。

e52a662ca03ce954814db6df2efb0957.png

构建一个微服务

也就是搭建一个Spring boot 项目,接下来介绍两种搭建Spring boot项目的流程。

一、IDEA生成

使用IDEA生成项目的主要过程如下:

1、Spring Initializer创建项目

a1ef548f9e9e6fb788591802ce310e3f.png

2、设置项目的基本信息

如图所示,可以设置创建项目的包名、Group的Id、Artifact的ld和Java的版本等信息。

5fb82273463df1dc70686be024cb22c8.png

3、添加依赖

用于添加Spring Boot的依赖。

这里依赖随便添加几个基本的就行

d2e4b826374cdda6e1fa01bc96c1b81f.png

4、Spring boot项目就建好了

df9c6877d8d58e417245634da82ab58f.png

5、启动类与控制类

启动类和控制类的代码如下所示:

fe4d6202e08feb025aaf2de2115d91b9.png

解释一下这两个注解:

SpringMVC中使用了3个注解作用于Chapter3BootDemoApplication类,分别是@Configuration (2.0.0版本中添加了@SpringBootConfiguration注解来代替Spring的标准配置注解@Configuration) .@EnableAutoConfiguration和@ComponentScan。SpringBoot提供了一个统一的注解@SpringBootApplication,默认属性下等于上述3个注解。

@RestController组合了@Controller和@ResponseBody注解,表明该类可以处理HTTP请求,并且返回JSON类型的响应。Spring lnitializer会自动为应用生成对应的启动类,一般以*Application方式进行命名。

6、添加端点

在启动类中增加控制类的端点,暴露出/test的端点。

所以在application.properties中设置服务器启动的端点,如下所示:

12d36113e499fd491e13c5597cc3499b.png

服务器会使用内置的Tomcat容器进行启动,服务器端口为8000。这样一个简单的Spring Boot Web应用就写好了,正常访问接口http://localhost:8000/test即可。

二、lnitial生成

如果不想使用IDEA的话,也可以在Spring官方网站https://start.spring.io/创建项目,再将创建好的项目下载到本地,解压之后导入到IDEA中。

1、创建项目。如图所示,填写Group的ld、Artifact的ld和项目依赖。添加项目依赖时,根据输入的关键字,会有下拉框选择提示。填好这些信息,就可以生成对应的项目。生成的项目会自动下载。

8f2453c5e927b367342dd8038d7d0d59.png

2、解压并导入项目。解压下载好的项目之后,会发现项目结构和IDEA中生成的一样如图所示,因为IDEA中调用的APIl接口是Spring官方的项目生成器接口。

32f765ca9717ec1a8e6eb2f79af8ef86.png

12b5b1a63882a341acc664c7b262cff9.gif

往期推荐

Kubernetes 上调试 distroless 容器

Kubernetes 上容器的启动顺序如何把控?

Redis 内存满了怎么办?这样置才正确!

手工模拟实现 Docker 容器网络!

0c56bdb8faa80c92840b7b413203aec4.gif

点分享

0b5032152db6006af57f745ea697a5e7.gif

点收藏

f07bca545f736e1726754f8909aff02e.gif

点点赞

566dc1e230217dd91f98c8963e1a42cc.gif

点在看

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

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

相关文章

云未来、新可能 - 绿色、无处不在、可信的计算

简介:阿里云资深技术专家、容器服务研发负责人易立在大会主论坛进行了主题为 “云未来,新可能” 的演讲,分享了阿里云基于大规模云原生实践下的技术趋势判断和技术创新进展。 2021 年 12 月 9 日至 10 日,KubeCon CloudNativeCo…

线上教育核心竞争力是什么?声网发布在线素质、职业教育解决方案

5月11日,声网在线上举办了主题为“聚焦场景力,释放生态力”的在线教育发布会,正式发布了新生态下在线教育多场景教学解决方案,包括在线音乐、在线美术、在线职业教育、在线编程、Stem在线教学解决方案。同时为兼顾降低教学场景研发…

ClickHouse Keeper 源码解析

简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper。ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务。本文对开源版本 ClickHouse v21.8.10.19-lts 源码进行了解析。 作者简介:范振(花名辰繁)&#xff0c…

pidof -x 不管用_专业摄影师最佳助手富士X-T200评测

作为X-T100的升级款,X-T200可谓是一经发布就受到了众多关注。相对来说,前作X-T100我们认为已经足够出色,而这次的富士X-T200又有多方面的提升,尤其是视频及视频对焦性能。关于这款机器实际的表现究竟如何我们接下去看。富士X-T200…

Oracle数据到MaxCompute乱码问题详解

简介:集成Oracle数据到MaxCompute,乱码问题分析; 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线集成(DataX)集成Oracle数据到MaxCompute的数据有…

Gartner:2022年全球半导体收入预计将增长13.6%

半导体元件供应链所受到的限制预计将在2022年逐步缓解 根据Gartner的预测,2022年全球半导体收入预计将达到6760亿美元,相比2021年增长13.6%。 Gartner研究副总裁Alan Priestley表示: “由于芯片短缺而引发的半导体平均销售价格(AS…

V8 编译浅谈

简介:本文是一个 V8 编译原理知识的介绍文章,旨在让大家感性的了解 JavaScript 在 V8 中的解析过程。 作者 | 子弈 来源 | 阿里技术公众号 一 简介 本文是一个 V8 编译原理知识的介绍文章,旨在让大家感性的了解 JavaScript 在 V8 中的解析过…

rabbitmq接收不到消息 防火墙_用PHP+RabbitMQ实现消息的发送和接收

消费者&#xff1a;接收消息逻辑&#xff1a;创建连接-->创建channel-->创建交换机-->创建队列-->绑定交换机/队列/路由键-->接收消息<?php /************************************* * PHP amqp(RabbitMQ) Demo - consumer * Author: Linvo * Date: 2018/7/…

斩获大奖|阿里云PolarDB-X引领云原生分布式数据库新时代

简介&#xff1a;阿里云原生分布式数据库PolarDB-X荣获“2021年度最佳分布式数据库”。 12月15-16日&#xff0c;以“引领分布式云变革 助力湾区数字经济”为主题的全球分布式云大会在深圳隆重召开&#xff0c;本届大会由全球分布式云联盟、深圳科技交流服务中心、深圳市通信学…

Gartner:2022年中国IT支出预计将突破5.5亿美元

2022年全球IT支出预计将达到4.4万亿美元&#xff0c;2022年中国IT支出预计将突破5.5亿美元&#xff0c;相比2021年增长7.76% 分析、云计算、无缝客户体验和安全等领域将成为首席信息官的重点采购和投资领域 根据Gartner的最新预测&#xff0c;2022年全球IT支出预计将达到4.4万亿…

深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法

简介&#xff1a;研发效能提升不知从何下手、一头雾水&#xff1f;阿里资深技术专家一文为你揭秘研发效能提升的系统方法。 注&#xff1a;本文是对云栖大会何勉分享内容的整理 这几年“研发效能”一直是热词&#xff0c;很多组织都会启动研发效能提升专项。我与其中的很多有过…

mac mysql 链接_mac上搭建mysql环境配置和Navicat连接mysql

mac上搭建mysql环境配置注意&#xff1a;mysql版本要和你的MAC版本保持一致2、一路傻瓜式点击下一步此处选择“Use Legacy Password Encryption”&#xff0c;否则使用navicat连接mysql的时候&#xff0c;会报无法加载身份验证的错误。3、环境配置打开终端&#xff0c;输入&…

io_uring vs epoll ,谁在网络编程领域更胜一筹?

简介&#xff1a;从定量分析的角度&#xff0c;通过量化 io_uring 和 epoll 两种编程框架下的相关操作的耗时&#xff0c;来分析二者的性能差异。 本文作者&#xff1a;王小光&#xff0c;「高性能存储技术SIG」核心成员。 背景 io_uring 在传统存储 io 场景已经证明其价值&a…

Redis 为何使用近似 LRU 算法淘汰数据,而不是真实 LRU?

作者 | 码哥呀来源 | CSDN博客在《Redis 数据缓存满了怎么办&#xff1f;》我们知道 Redis 缓存满了之后能通过淘汰策略删除数据腾出空间给新数据。淘汰策略如下所示&#xff1a;redis内存淘汰设置过期时间的 keyvolatile-ttl、volatile-random、volatile-lru、volatile-lfu 这…

量化感知训练实践:实现精度无损的模型压缩和推理加速

简介&#xff1a;本文以近期流行的YOLOX[8]目标检测模型为例&#xff0c;介绍量化感知训练的原理流程&#xff0c;讨论如何实现精度无损的实践经验&#xff0c;并展示了量化后的模型能够做到精度不低于原始浮点模型&#xff0c;模型压缩4X、推理加速最高2.3X的优化效果。 1. 概…

此表单只能填写一次_暴雪战网国服账号修改邮箱只能填写表单申请

暴雪战网国服账号只认身份信息&#xff0c;注册必须实名&#xff0c;而且实名信息千万不要乱填&#xff0c;不然账号出现问题&#xff0c;需要上传证件图片的&#xff0c;客服会核实与注册实名内容是否一致&#xff0c;不然无法帮助玩家解决一些问题。国服账号邮箱没有什么权限…

贾扬清演讲实录:一个AI开发者的奇幻漂流

简介&#xff1a;2021阿里灵杰AI工程化峰会&#xff0c;贾扬清深度解读阿里灵杰大数据和AI一体化平台。 演讲人&#xff1a;贾扬清 演讲主题&#xff1a;一个AI开发者的奇幻漂流 活动&#xff1a;2021阿里灵杰AI工程化峰会 对于绝大多数人来说&#xff0c;这一波AI浪潮兴许…

上云避坑指南100篇|「云」上玩法虽多,小心水土不服

商业智能BI发展至今&#xff0c;从市场增速来看&#xff0c;我国已进入 BI 及 DA&#xff08;数据分析&#xff09;领域的第一方阵&#xff0c;并成为发展最快的国家之一。 IDC 数据显示&#xff0c;2020 年中国商业智能软件市场规模为 5.8 亿美元&#xff0c;同比增长 17.1%&a…

如何基于LSM-tree架构实现一写多读

简介&#xff1a;传统MySQL基于binlog复制的主备架构有它的局限性&#xff0c;包括存储空间有限&#xff0c;备份恢复慢&#xff0c;主备复制延迟等问题&#xff0c;为了解决用户对于云上RDS(X-Engine)大容量存储&#xff0c;以及弹性伸缩的诉求&#xff0c;PolarDB推出了历史库…

Dubbo-go v3.0 正式发布 ——打造国内一流开源 Go 服务框架

简介&#xff1a;Dubbo-go 是常新的&#xff0c;每年都在不断进化。介绍 Dubbo-go 3.0 工作之前&#xff0c;先回顾其过往 6 年的发展历程&#xff0c;以明晰未来的方向。 作者 | 李志信 来源 | 阿里技术公众号 作者介绍&#xff1a; 李志信&#xff08;github laurencelizhix…