springboot配置文件必须清楚的基本用法

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.属性提示

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

选择项目结构

 点击工件点击自定义配置

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

成功识别

 

 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,成功打印到控制台中

读取数组

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,成功打印到控制台中

7.配置文件数据引用

1.获取指定数据

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

yml配置信息


class: 五班

Name: ${class}张三

 获取yml文件信息

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

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

 访问页面,数据成功显示

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

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

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

成功打印到控制台中

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";
    }

成功获取 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值