zoukankan      html  css  js  c++  java
  • SpringBoot yml文件语法

    SpringBoot提供了大量的默认配置,如果要修改默认配置,需要在配置文件中修改。

    SpringBoot默认会加载resource下的配置文件:

    • application*.yml
    • application*.yaml
    • application*.properties

    这也是配置文件的加载顺序,如果某个key有多个配置,则后加载的会覆盖之前加载的配置。

    yml、yaml是同一种文件,后缀写成yml、yaml都可以。

    一般使用application.yml。


    springboot在不同的环境下有默认的加载文件:

    • application  开发、测试、生产都会加载,公共的
    • application-dev  只在开发环境加载(调试src/main)
    • application-test  只在测试环境加载(调试src/test)
    • application-prod  只在生产环境加载(正式打包部署)

     

    yml文件语法

    (1)普通字段:

    name: zhangsan

    值不加引号

    (2)对象、Map

    对象、Map的配置方式是一样的。

    student: #对象名、Map名
      id: 1  #配置一个属性、一个键值对
      name: chy
      age: 20
      score: 100

    值可以是对象:

    server:
      port: 8080
      servlet:
        context-path: /springboot

    servlet的值就是一个对象。不配置端口,默认为8080;不配置context-path,默认为/

    (3)数组、List

    city: [beijing,shanghai,guangzhou,shenzhen]
    student: [{name: zhangsan,age: 20},{name: lisi,age: 20}]  #元素可以是对象

    值,不管是key的值,还是数组元素,都不加引号。

    key、value冒号分隔,冒号后面都要加一个空格,加了空格后key会变成橙色,才有效。


    使用yml中的值

    如果是springboot预定义的key,springboot会自动使用它。如果是自定义的key,就需要我们自己来引用。有2种引用方式。

    (1)使用@Value

    name: chy
    @RestController
    public class UserController {
        @Value("${name}") //使用@Value注入配置文件中的值。${}要加引号
        private String name;
    
        @RequestMapping("/user")
        public String handler(){
            return name; //使用
        }
    
    }

    不能直接${ }、"${ }"来使用配置文件中的值。

    需要借助成员变量,使用@Value注入配置文件中的值,通过成员变量来引用。

    不管成员变量是什么数据类型,${ }都需要加引号,会自动转换为需要的类型,注入。

    对象、Map,通过.来注入单个字段, @Value("${student.name}")

    数组、List,通过下标来注入单个元素,@Value("${city[0]}")

    只能注入基本类型,不能直接直接注入整个对象、Map、数组、List。

    (2)使用@ConfigurationProperties注入对象、Map

    使用@Value依次注入对象、Map的字段时,student.id,student.name,student.age,都有相同的前缀student,也可以这样来注入:

    @RestController
    @ConfigurationProperties(prefix = "student") //设置前缀
    public class UserController {
        private int id;
        private String name;
        private int age;
        private int score;
    
        public void setId(int id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void setScore(int score) {
            this.score = score;
        }
    
        @RequestMapping("/user")
        public String handler(){
            return name; //使用
        }
    
    }

    设置前缀、设置对应的成员变量、并提供对应的setter方法,会自动注入该字段的值。

    运行,效果正常,但IDEA提示:

    其实没啥影响,当然也可以在pom.xml中添加:

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

    这样写完@ConfigurationProperties后,在yml中配置该前缀(对象)时,会有字段提示,比如打一个student.,会有预选项id、name、age、score。

  • 相关阅读:
    C#:正则表达式
    jsp:
    关于博客的设置
    登录注册案例—MongoDB数据库连接
    cookie封装
    博客样式
    自己的博客
    CentOS7 启动docker.service失败
    合并多个jar包,并通过私服依赖
    springboot+支付宝条码支付开发详解
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12286851.html
Copyright © 2011-2022 走看看