SpringBoot yml文件语法

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

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

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

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

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

一般使用application.yml。


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的值就是一个对象。不配置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。

原文地址:https://www.cnblogs.com/chy18883701161/p/12286851.html

时间: 2024-11-10 02:23:46

SpringBoot yml文件语法的相关文章

springboot yml文件 参数中的逗号 &#39;,&#39;

今天在学习springcloud的geteway的时候,使用yml配置route spring: profiles: betweenroute cloud: gateway: routes: - id: between uri: http://localhost:8763 predicates: Between=2019-06-28T15:16:04.662+08:00[Asia/Shanghai],2019-07-28T15:16:04.662+08:00[Asia/Shanghai] //错

springboot yml 文件配置oracle,提示账号密码错误

最近使用Spring boot,本来一直连接的是mysql数据库,一直没问题.昨天在更换了oracle数据库后,一直提示账号密码不正确,登录被拒绝.检查多次,检查账号密码一切正常,但就是连接不上oracle. java.sql.SQLException: ORA-01017: invalid username/password; logon denied at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445) at ora

springboot yml文件

server: port: 9093 servlet: context-path: /area/ # 项目的整体前缀 web: uploadPath: E:/file123/file456/ success: 200 error: 0 # 毫秒 (redis token的保存失效) jwtTimeOut: 10000 spring: datasource: url: jdbc:mysql://192.168.x.xx:3306/manager_area?useUnicode=true&chara

使用SpringBoot的yml文件配置时踩的一个坑

问题描述:使用SpringBoot整合redis进行yml配置的时候,启动工程报错,提示加载application.yml配置文件失败: 17:18:27.430 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed java.lang.IllegalStateException: Failed to load property source from location 'clas

Spring-boot(二)yml文件的使用

上一章创建了一个简单的springboot项目,会发现里面有一个application.properties的文件,这个文件是核心文件,很多都是里面配置,并且注入(个人理解像spring的bean.xml文件一样).不过实际项目中,很多都是用的application.yml去完成的,两者是一样的,不过后者更加的简单易懂.开始实现下 先将application.properties改名application.yml. 然后加入代码,这里加入会有提示的 server: servlet: contex

SpringBoot使用@Value从yml文件取值为空--注入静态变量

SpringBoot使用@Value从yml文件取值为空--注入静态变量 1.application.yml中配置内容如下: pcacmgr:   publicCertFilePath: E:\\pcacmgr\\CerFiles\\xh_public.cer   encPublicCertFilePath: E:\\pcacmgr\\CerFiles\\hjzf_encPublic.cer   encPfxFilePath: E:\\pcacmgr\\CerFiles\\hjzf_encPfx

springboot配置多个yml文件

springboot配置多个yml文件 参考 springboot配置多个yml文件 maven(三)最详细的profile的使用 实战 为生产和开发分别配置一个profile.每个都有多个文件. profile 每个profile都应该有唯一的id, 可以同时激活多个profile,每个profile提供一些配置信息. <project> <profiles> <!-- profile的id应该唯一,但是当重复时,使用的是文件后面的配置.--> <profile

SpringBoot---Eclipse编辑yml文件不能自动提示的问题(Eclipse安装插件STS)

在学习了几天SpringBoot之后,刚开始跟着别人的博客使用的是IDEA,后来跟着视频学,讲师用的eclipse,便跟着用了,但是发现在编辑yml配置文件的时候,没有自动提示的功能,百度之后发现是没有安装STS插件,那就安装呗,没想到装一个插件也踩了不少的坑,这里总结一下,希望能帮到翻到这篇博客的小白. 看了很多关于安装STS插件的博文,也下载了好几个版本,但是都没有正常提示. 后来才发现重要的一点是:需要根据Eclipse版本下载相应的STS插件,但是我安装的时候,也是按照网上的博客来的,对

YAML 模板文件语法

YAML 模板文件语法 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建. 其它大部分指令都跟 docker run 中的类似. 如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置. image 指定为镜像名称或镜像 ID.如