【Springboot】yaml配置文件&多环境切换

这篇具有很好参考价值的文章主要介绍了【Springboot】yaml配置文件&多环境切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于配置文件的详细说明可以看官方文档:

24. Externalized Configuration


以下是个人学习过程中的笔记,如有错误,请多指教!

目录

(一)配置文件

(二)yaml的概述及基本使用

        yaml基本语法

(三)注入配置文件的三种方式

(四)yaml配置文件位置

(五)多环境切换配置文件


(一)配置文件

Springboot中可以使用两种形式的配置文件:.properties文件和 .yml文件

  1. application.properties

            语法结构 :key=value
  2. application.yml

            语法结构: key: value

(二)yaml的概述及基本使用

YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)

                                yaml语言以数据为中心,而不是以标记语言为重点!

传统xml配置

<server>
    <port>8081<port>
</server>

yaml配置

server:
  port: 8080

        yaml基本语法:

        1. 冒号后面必须加一个空格!

        2. yaml通过缩进区分层级关系,相同缩进的为同一层级。

        3. 属性和值的大小写都是十分敏感的。

对象、Map(键值对)

# 配置对象属性
person: 
  name: 小明
  age: 8

# 配置键值对
maps: {k1: v1, k2: v2}
  

数组(List、set)

用 - 值表示数组中的一个元素,比如:

pets: 
  - cat
  - dog
  - parrot

# 行内写法
pets: [cat, dog, parrot]

(三)注入配置文件的三种方式

方式一:通过yaml配置文件注入匹配值

需要文件有:一个实体类Dog(name和age属性),application.yml, 一个测试类,还需在pom.xml中另外新添一个依赖。

①实体类Dog

package com.example.pojo;


@Component  //注册bean到容器中
@ConfigurationProperties(prefix = "dog") // 加载application.yaml中的配置,前缀为dog
public class Dog{

    private String name;
    private Integer age;

    //有参无参构造方法、get和set方法、toString()方法
}

②application.yml

dog: 
  name: 旺财
  age: 3

③测试类

@SpringBootTest
class DemoApplicationTests {

    @Autowired //将狗狗自动注入进来
    private Dog dog;

    @Test
    public void contextLoads() {
        System.out.println(dog); //打印看下狗狗对象
    }

}

这里还需要在pom.xml中添加一个依赖,很关键!不加的话会爆红。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

运行结果:

【Springboot】yaml配置文件&多环境切换

方式二(还没学到yaml时是如何给bean注入属性值的):通过@Value进行注入

这里只需要一个实体类即可,

@Component  // 注册bean
public class Dog{

    @Value("旺财")
    private String name;
    @Value("3")
    private Integer age;
}

方式三:指定加载自定义的properties文件为对象属性赋值

要有两个文件:whatever.properties(放在resources文件夹下)和一个实体类Dog;

(ps.这里的配置文件我取名为whatever,表示配置文件的名字是什么都可以,不一定非得是application.properties)

①whatever.properties配置文件

name=旺财
age=3

②实体类Dog

@Component  //注入到容器中
@PropertySource(value = "classpath:whatever.properties") 
// 加载指定路径的配置文件,这里的whatever.properties文件放在resources文件夹下
public class Dog{
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
}

三种方式看下来,@Value是最麻烦的了。

@Value和@ConfigurationProperties对比如下:

@ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

1、@ConfigurationProperties只需要些一次就好,@Value则需要每个字段都添加。

2、松散绑定:比方说yml文件中写的last-name,实体类的属性是lastName也能匹配得上,- 后面跟着的字母默认是大写的。具体可以测试下。

3、 JSR303数据校验,就是可以在字段是增加一层过滤器验证 , 可以保证数据的合法性。(比如@Null 验证对象是否为null ,@Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。)

4、复杂类型封装,yml中可以封装对象,@Value就不支持。

结论:

配置yml和配置properties都可以获取到值 , 推荐使用 yml;

如果在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @Value;

如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!


(四)yaml配置文件位置

可以放在4种地方:

序号 位置 说明 优先级
./config/ 工程文件中的config文件夹下 第一优先被配置
./ 直接在工程文件根目录下 第二优先被配置
classpath:/config/ 资源文件夹中的config文件夹下 第三优先被配置
classpath:/ 直接在资源文件下 第四优先被配置

项目中具体位置可参考下图:

【Springboot】yaml配置文件&多环境切换


(五)多环境切换配置文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml ,

用来指定多个环境版本;

例如:

application-test.properties 代表测试环境配置

application-dev.properties 代表开发环境配置

但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件

(1)使用proerties文件进行配置:

下图可见我们有三个配置文件:

【Springboot】yaml配置文件&多环境切换

 切换环境时,在application.properties中说明。

【Springboot】yaml配置文件&多环境切换

(1)使用yaml文件进行配置:

【Springboot】yaml配置文件&多环境切换

 仅在一个文件中配置即可,---表示分割线

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!文章来源地址https://www.toymoban.com/news/detail-455520.html

到了这里,关于【Springboot】yaml配置文件&多环境切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一、SpringBoot基础[Yaml配置文件]

    解释:application.yaml用来替代application.properties文件,如果文件中有较多的配置时,使用Yaml明显方便了许多 application.properties文件格式: Yaml文件格式: 注意:写的时候冒号后面必须加空格否则没有任何效果 1.对象 2.数组 解释:下面的 - 就表示一个列表内容,有的则是 [] 表示

    2024年02月15日
    浏览(47)
  • springboot篇---配置文件yaml篇2

    1.语法结构分类: application.properties 语法结构 :key=value application.yml 语法结构 :key:空格 value **配置文件的作用 :**修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了  2.yaml概述 YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。

    2024年02月04日
    浏览(41)
  • python通过yaml文件来实现环境配置

    YAML 的官方网站 python实现获取YAML 文件的完整路径 以上这段代码定义了一个函数 get_file_path() ,用于获取指定文件夹、环境命名文件夹和 YAML 文件的完整路径。 函数接受三个参数: folder :文件夹名称。 env :环境命名文件夹名称。 filename :YAML 文件名。 函数通过调用 Python

    2024年02月01日
    浏览(36)
  • 【SpringBoot】多环境切换的灵活配置

    在日常的开发中,一般都会分好几种环境,比如通常的 开发环境:一般在开发的过程中,一个比较随意地环境,通常可以随意重启,删除数据 ; 测试环境:面向测试同学的环境,需要相对稳定,完整,基本模拟线上的环境,但是可操作。 生产环境:也就是线上环境,基本没

    2024年03月11日
    浏览(37)
  • springboot--多环境配置快速切换开发、测试、生产环境

    环境隔离能力,快速切换开发、测试、生产环境 步骤: 1、标识环境:指定那些组件、配置在那个生效 2、切换环境:这个环境对应的所有组件和配置就应该生效 区分出几个环境:dev(开发环境)、test(测试i环境)、prod(生产环境)、default(默认环境) 指定每个组件在那个环境

    2024年02月06日
    浏览(73)
  • Spring Boot入门(04):实现多环境配置文件切换,轻松搞定不同环境部署问题

            在开发和部署Spring Boot应用的过程中,经常需要在不同的环境中进行配置,比如开发环境、测试环境、生产环境等。为了方便管理和部署,我们需要实现多环境配置文件切换。本篇教程将带你轻松搞定不同环境部署问题,让你的应用在各个环境中稳定运行。无论你是

    2024年02月10日
    浏览(42)
  • springboot dynamic-datasource 实现动态切换数据源-多租户-配置文件切换-基于dynamic-datasource

    1、实现动态切换数据源 2、实现配置多数据源 3、实现读写分离也可以用多数据源方式 4、选择 dynamic-datasource集成了很多ORM的框架,其中,使用比较多的是druid,但有一些东西开始收费了 druid也可以自行配置,配置多了点 目前版本只支持单一位置加载数据源(只能从配置文件或

    2024年02月09日
    浏览(55)
  • 关于k8s 安装Dashboard recommended.yaml下载失败以及calico.yaml 下载文件

    输入地址: https://www.ipaddress.com/ 查找 查询结果: 然后配置 linux 文件 vim /etc/hosts 然后再执行: calico.yaml 下载地址:https://docs.projectcalico.org/v3.8/manifests/calico.yaml

    2024年02月16日
    浏览(59)
  • SpringBoot多环境开发-配置文件

    在Spring Boot中进行多环境开发时,你可以使用配置文件来定义每个环境的属性。Spring Boot提供了一种方便的方式来管理和加载不同环境的配置文件。 以下是一些常见的配置文件命名约定: application.properties: 默认的配置文件,适用于所有环境。 application-dev.properties: 用于 开发

    2024年02月14日
    浏览(39)
  • SpringBoot入门篇2 - 配置文件格式、多环境开发、配置文件分类

    目录 例: 修改服务器端口。(3种) src/main/resources/application.properties  src/main/resources/application.yml (主要用这种)   src/main/resources/application.yaml SpringBoot配置文件加载优先级 :/application.properties application.yml  application.yaml yaml,一种数据序列化格式。 优点:容易阅读、以数据为

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包