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。

SpringBoot yml文件语法的更多相关文章

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

    最近使用Spring boot,本来一直连接的是mysql数据库,一直没问题.昨天在更换了oracle数据库后,一直提示账号密码不正确,登录被拒绝.检查多次,检查账号密码一切正常,但就是连接不上ora ...

  2. SpringBoot入门及YML文件详解

    SpringBoot 简介 微框架,与 Spring4 一起诞生,基于约定.生来为了简化 spring 的配置 优点 可以快速的上手,整合了一些子项目(开源框架或者第三方开源库) 可以依赖很少的配置快 ...

  3. springboot配置文件之yml的语法学习

    springboot配置文件(.yml/.yaml.properties) YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语 ...

  4. Springboot:属性常量赋值以及yml配置文件语法(四)

    方式一: 注解赋值 构建javaBean:com\springboot\vo\Dog 1:@Component:注册bean到spring容器中 2:添加get set toString方法 3:使用 ...

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

    上一章创建了一个简单的springboot项目,配置可以说非常的简单. 不过,在实际开发中不可能都用默认的配置,还是需要根据自己的实际项目需求有自定义的配置的. 比如:端口号需要变更,模板引擎的缓存开 ...

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

    SpringBoot使用@Value从yml文件取值为空--注入静态变量     1.application.yml中配置内容如下:   pcacmgr:   publicCertFilePath: ...

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

    问题描述:使用SpringBoot整合redis进行yml配置的时候,启动工程报错,提示加载application.yml配置文件失败: ::27.430 [main] ERROR org.sprin ...

  8. SpringBoot yml properties文件

    一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https ...

  9. Springboot的yml文件

    spring: datasource: # 数据库四大组件 schema-password: root data-username: root driver-class-name: com.mysql ...

随机推荐

  1. fiddler中文乱码解决方案

    只用添加一个注册表变量就行 cmd窗口执行regedit命令,在弹出的注册表编辑界面找到fiddler 右击新建一个字符传值 HeaderEncodingGBK 结果如上图右所示~ 重启fiddler ...

  2. 计算几何-HPI

    This article is made by Jason-Cow.Welcome to reprint.But please post the article's address.   在线笛卡尔坐 ...

  3. Bugku-CTF之江湖魔头(学会如来神掌应该就能打败他了吧)

    Day39     江湖魔头 200 http://123.206.31.85:1616/ 学会如来神掌应该就能打败他了吧

  4. python 鸢尾花数据集报表展示

    import seaborn as snsimport pandas as pdimport matplotlib.pyplot as pltsns.set_style('white',{'font. ...

  5. 关于java中MD5加密(可直接使用)

    本文转自:http://www.cnblogs.com/solove/archive/2011/10/18/2216715.html 上部分是转载的关于字符串的加密,后半部分则比较全,包括字符串.文件 ...

  6. CentOS: 网络连接故障排除

    yum不能正常动作,惯性认为是需要替换BaseURL,结果后来才发现是Gateway不知什么时候被错误设定了,memo如下. 现象表现于yum不能正常动作,确认ping的操作,发现是不能解析DNS [ ...

  7. chomp/undef/标量 --Perl 入门第二章

    1.chomp 用途:去掉字符串 末尾的换行符 $text="a line of text \n" chomp($text) #去除行末的换行符 chomp()  --本质上是一个 ...

  8. 五分钟学Java:打印Java数组最优雅的方式是什么?

    在逛 Stack Overflow 的时候,发现了一些访问量像‎安第斯山一样高的问题,比如说这个:打印 Java 数组最优雅的方式是什么?访问量足足有 220W+,想不到啊,这么简单的问题竟然有这么多 ...

  9. js 设计模式:观察者和发布订阅模式

    总是把这两个当作同一个模式,但其实是不太一样的,现在重温一下. 观察者模式 观察者直接订阅目标,当目标触发事件时,通知观察者进行更新 简单实现 class Observer { constructor ...

  10. spark实验(五)--Spark SQL 编程初级实践(1)

    一.实验目的 (1)通过实验掌握 Spark SQL 的基本编程方法: (2)熟悉 RDD 到 DataFrame 的转化方法: (3)熟悉利用 Spark SQL 管理来自不同数据源的数据. 二.实 ...