微服务 从0开始 Spring Cloud —— 比xml更适合的配置文件yaml

Posted 桃花键神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务 从0开始 Spring Cloud —— 比xml更适合的配置文件yaml相关的知识,希望对你有一定的参考价值。

🔎这里是【秒懂·云原生】,关注我学习云原生不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

👀专栏介绍

【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。

👀本期介绍

主要介绍Yaml配置文件

文章目录

YAML

Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yml

其中,application.yml 是一种使用 YAML 语言编写的文件,它与
application.properties 一样,可以在 Spring Boot 启动时被自动读取,修改 Spring Boot 自动配置的默认值。

YAML 简介

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。

约定:

  • k: v 表示键值对关系,冒号后面必须有一个空格
  • 松散表示,java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。

YAML 常用写法

YAML 支持以下几种数据结构:

  • 普通的值(数字、字符串、布尔、日期)
  • 对象 属性值的集合
  • 数组 一组按次序排列的值
  • 集合 List、Set 与数组一样,Map与对象一样键值对的集合

普通值(字面量)

字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等。

在 YAML 中,使用“key:[空格]value”的形式表示一对键值对(空格不能省略)

字面量直接写在键值对的“value”中即可,且默认情况下字符串是不需要使用单引号或双引号的。

username: root

若字符串使用单引号,则不会转义特殊字符,特殊字符会输出为其本身想表达的含义

name='zhangsan \\n lisi'

输出:zhangsan \\n lisi

若字符串使用双引号,则会转义特殊字符,\\n代表换行,输出:

name1: zhangsan 
name2: 'zhangsan \\n lisi'
name3: "zhangsan \\n lisi" 
age: 18
flag: true 
date: 2022/04/21

对象(属性和值)、Map(键值对)

它们都是一对键值对,YAML 为对象提供了 2 种写法

  • 普通写法 ,使用缩进表示对象与属性的层级关系。
person: 
  name: zhangsan 
  age: 20
  • 行内写法
person: name: zhangsan,age: 20 #注意 name: value :后 面要有空格

数组、list、set

YAML 使用“-”表示数组、list、set 中的元素

  • 普通写法
course: 
 - spring 
 - mybatis 
 - spring boot
  • 行内写法
course: [spring,mybatis,spring boot]

复合结构

以上几种数据结构可以任意组合使用,以实现不同的用户需求。
这里我把常用的几种已经写出来,以后忘了可以再参考一下

sb:
  username: 'abc \\n hello' #字符串 
  password: 6564321 #字符串 
  birthday: 2011/12/23 #日期 
  books: #map 
    jsp: 36 
    html: 78 
    spring: 78 
  books2: jsp: 56,spring: 65,mybatis: 98 #map 行内 
  person: #javabean 
    name: abc 
    age: 23 
  person2: name: lily, age: 36  #javabean行内 
  hobby: #数组 
    - jsp 
    - hibernate 
    - spring 
    - mybatis 
  list: # list集合 
    - 32 
    - 65
    - 98 
  set: #set 集合 
    - hello 
    - world 
  hobby2: [23,45,56] #数组 list set 行内 
  mapList: # 数组 list set 里存map 
    - jsp: 36 
      hibernate: 58 
    - html: 65 
      css: 98 
      js: 65
    - vue: 36,react: 98

YAML 组织结构

一个 YAML 文件可以由一个或多个文档组成,文档之间使用“—”作为分隔符,且个文档相互独立,互不干扰。如果 YAML 文件只包含一个文档,则“—”分隔符可以省略。

使用 IDEA 从 0 开始搭建 Spring Cloud 微服务

参考技术A 以下内容均来源于一个微服务初学者的实践,仅供参考。

首先启动 Spring Cloud Eureka 注册中心,其他部分都作为服务注册到 Eureka ,并通过注册的服务名互相访问。Spring Cloud Config 提供统一的配置信息,供其他服务读取。Provider 生产者服务不直接对外暴露,仅供 Consumer 消费者服务调用。用户通过 Spring Cloud Gateway 统一访问消费者服务。

首先创建一个空 Maven 项目,然后右键项目 -> New Module ,选择继续创建空 Maven 模块或者使用 Spring Initializr 构建 Spring Cloud 模块。common模块用于存放公共的 lib ,如 dao 、model 、util 等。config-dev 存放配置文件,上传到 git 之后供 Spring Cloud Config 读取。

除了少数像 Spring Cloud Config 、Spring Cloud Gateway 这种独立应用,大部分非空模块都需要添加 spring-boot-starter-web 构建 Web 应用。下图是使用 IDEA 的 Spring Initializr 快速构建新模块。

下面贴上详细的配置文件和注解,bootstrap.yml 具有高优先级,会提前加载并且不会被 application.yml 覆盖,spring.cloud.config 需要配置在 bootstrap.yml 中,否则不能正常从配置中心获取配置信息。

application.yml

HobbyEurekaApplication.java

application.yml

application-dev.yml

HobbyConfigApplication.java

bootstrap.yml

config-dev/gateway.yml

HobbyGatewayApplication.java

在 Spring Cloud Gateway 的配置中已经展示过如何从 config-dev 配置仓库中读取配置文件。spring.cloud.config 和 eureka.client 都已经在 bootstrap.yml 中配置过,接下来不做赘述。多模块项目中扫描其他模块的 mybatis 文件需要做额外的配置。
application.yml

HobbyProviderTestApplication.java

消费者调用生产者可以使用 Feign 声明式服务调用。
HobbyConsumerTestApplication.java

TestFeignService.java

TestServiceImpl.java

Spring Cloud Eureka >> Spring Cloud Config >> Spring Cloud Gateway >> 其他服务

微服务架构能够将各种服务解耦,单独部署,配合 devops 才能展现出真正的威力,否则运维的工作会苦不堪言。gitlab 目前已经集成了 devops 功能,只要在项目中添加 .gitlab-ci.yml ,push 到 Gitlab 之后就会自动执行配置的命令,这里简单介绍一下 gitlab 的安装部署。
CentOS7 自带的 Git 版本号是 1.8.3.1 ,需要更新,否则 Gitlab Runner 在进行自动构建的时候会报错 fatal: git fetch-pack: expected shallow list ,更新步骤如下:

Gitlab 安装官方文档
Gitlab Runner 安装官方文档

配置文件的地址 /etc/gitlab/gitlab.rb
修改配置文件的操作:

常用配置:

以上是关于微服务 从0开始 Spring Cloud —— 比xml更适合的配置文件yaml的主要内容,如果未能解决你的问题,请参考以下文章

微服务 从0开始 Spring Cloud —— 比xml更适合的配置文件yaml

从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析

从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析

从 Spring Cloud 开始,聊聊微服务架构实践之路

从天气项目看Spring Cloud微服务治理

硬核!从0到1学习Spring Cloud微服务章节《建议收藏》