1.application.properties

springboot简化了我们很多开发,一些基本的配置不需要再去xml文件中配置,只要在springboot的默认配置文件中配置即可。

比如:

端口号

tomcat内嵌在springboot中,我们无法直接修改tomcat的端口号,没有配置文件。

springboot提供了一个全局配置文件application.properties,我们只要在全局配置文件中写入server.port=8081,即可更改端口号。

日志

通过配置logging.level.root=error可以只查看出错的日志

2.*.yml(主流)和*.yaml文件

这两种配置文件的用法相同,都可以去配置springboot

比如:

端口号

server:

port: 8081

3.优先级

当properties、yaml、yml文件同时存在时,哪一个文件的优先级高呢?

当配置属性冲突时,配置文件的优先级为 properties>yml>yaml

不同配置会全部保留,冲突的会互相覆盖

4.属性提示

springboot配置windows路径 springboot如何指定配置文件路径_System

当同时存在yaml和yml文件时候,此时idea不认为这两种文件是配置文件,因此在写代码的时候并不会提示我们,下面是解决方案。

选择项目结构

springboot配置windows路径 springboot如何指定配置文件路径_java_02

 点击工件点击自定义配置

springboot配置windows路径 springboot如何指定配置文件路径_java_03

点击加号,选中yaml和yml文件,点击确定

springboot配置windows路径 springboot如何指定配置文件路径_spring boot_04

成功识别

 

springboot配置windows路径 springboot如何指定配置文件路径_spring_05

 5.yaml语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • #表示注释
  • 多个数据使用-加空格表示或者使用[]形式,多个对象可以使用[jason数据格式书写]

6.读取yml信息

读取单个信息

在yml文件中写入一个信息,name: 张三

@RestController
@RequestMapping("/test")
public class TestController {

    @Value("${name}")
    private String name;

    @GetMapping
    public String getName(){
        System.out.println(name);
        return "zhangsan";
    }
}

 运行项目,访问url,成功打印到控制台中

springboot配置windows路径 springboot如何指定配置文件路径_spring boot_06

读取数组

yml文件

sum:
  - run
  - pass
  - tabe
  - call
  - pu
@RestController
@RequestMapping("/test")
public class TestController {

    @Value("${sum[2]}")
    private String bk;

    @GetMapping
    public String getName(){
        System.out.println(bk);
        return "zhangsan";
    }
}

运行项目,访问url,成功打印到控制台中

springboot配置windows路径 springboot如何指定配置文件路径_spring boot_07

7.配置文件数据引用

1.获取指定数据

一个班级有多个学生,都要写成班级名加姓名的格式,我们每个名字前面手写班级名可以实现,但是当班级信息发生变化时,数据改起来会很麻烦。

yml配置信息

class: 五班

Name: ${class}张三

 获取yml文件信息

@Value("${Name}")
    private String bk;

    @GetMapping
    public String getName(){
        System.out.println(bk);
        return "zhangsan";
    }

 访问页面,数据成功显示

springboot配置windows路径 springboot如何指定配置文件路径_java_08

2.使用Environment对象可以获取所有的配置文件值

//使用自动装配,将所有数据封装到一个对象中
    @Autowired
    private Environment evniroment;

    @GetMapping
    public String getName(){
        System.out.println(evniroment.getProperty("Name"));
        return "zhangsan";
    }

成功打印到控制台中

springboot配置windows路径 springboot如何指定配置文件路径_spring boot_09

3.自动装配

我们一般很少需要获取配置文件中的所有信息,只要获取指定对象的配置信息即可。但是前面中每个值一一对应又太麻烦了,于是又有一种新的方法。

比如我们只想给Person类配置信息

Person:
  id: 1
  name: 张三
  sex: 男
  std: 123456789

定义一个java实体类,来接收yml文件中的信息。

这里的@Component就是将该类声明有spring管理

@ConfigurationProperties(prefix = "person")指的是获取前缀为person的配置信息,这里的prefix可以省略。注意,这里的属性名需要与yml中的属性名以一对应,否则会匹配不成功。

@Component
@Data
@ConfigurationProperties(prefix = "person")
public class Person {
    private int id;
    private String name;
    private String std;
    private String sex;
}

获取系统中的Person信息并打印

@Autowired
    private Person person;

    @GetMapping
    public String getName(){
        System.out.println(person);
        return "zhangsan";
    }

成功获取 

springboot配置windows路径 springboot如何指定配置文件路径_spring boot_10