SpringBoot配置文件

配置文件的作用

整个项目上,所有的重要数据都在配置文件中配置,例如

  • 数据库的连接信息(用户名、密码)
  • 项目的启动端口
  • 第三方系统的调用密钥等信息
  • 发现和定位问题的普通日志和异常日志

配置文件的格式

Spring Boot的配置文件分为两种格式:

  • properties:老款(SpringBoot项目的默认文件格式)
  • yml(yaml):新

【说明】

  1. 理论上properties和yml可以存在于一个项目中,但是实际的业务,通常采取一种统一的配置文件格式,这样可以更好的维护。
  2. 当properties和yml存在于一个项目中时,如果配置文件中存在相同的配置,这时以properties为主。properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息.

properties配置文件说明

基本语法

properties 以键值的形式配置的, key和value之间以=相连
配置项分类:

  1. 系统配置项(规定):比如server.port / spring.datasource.url
    系统配置项https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties
  2. 用户自定义配置(非系统配置项) key可以用户自定义。
# 配置项⽬端⼝号
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

配置⽂件中使用 # 来添加注释信息。

properties默认不支持中文,我们需要把他更改成utf8
这里的setting需要设置两边,一个是当前项目的配置文件,另一个时所有新项目的配置文件
在这里插入图片描述
在setting下将其都改为utf8
在这里插入图片描述

读取配置文件

如果在项目中想要主动的读取配置文件中的内容,可以使用@value注解来实现。
@value注解使用 ${key}格式读取

@Value("${javaclass}")  // 一定是 ${key}
private String myConfigClass;

@RequestMapping("/sayHi")   
public String sayHi() {
    return "hello world ->" + myConfigClass;  
}

properties优点

  1. 是系统默认的配置文件
  2. properties配置项的优先级高
  3. 格式简单,不容易出错

properties缺点

写法冗余
在这里插入图片描述

yml配置文件说明

yml 是 YAML 是缩写,全称 Yet Another Markup Language 翻译成中文就是:另⼀种标记语言。

yml基本语法

yml是树形结构的配置文件,他的基础语法是key: value
注意:key和value之间使用英文冒号加空格的方式组成,空格不可省略

server:
  port: 9999

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/dbnamme?characterEncoding=utf8
    username: root
    password: 123

优点

  1. 可读性高,写法简单,语法类似JSON
  2. 支持更多的数据类型
  3. 支持更多的编程语言(Java、golang、PHP、python等)properties只有Java在用

缺点

书写容易出错

yml 使用进阶

配置不同数据类型及null

mystr1: 你\n好
mystr2: '你\n好'
mystr3: "你\n好"
@Value("${mystr1}")
private String str1;

@Value("${mystr2}")
private String str2;

@Value("${mystr3}")
private String str3;

@PostConstruct
public void doPostConstruct() {
    System.out.println("-----start-----");
    System.out.println(str1);
    System.out.println(str2);
    System.out.println(str3);
    System.out.println("-----end-----");
}

在这里插入图片描述

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

配置对象

student:
  id: 1
  name: zhangsan
  age: 18

⾏内写法

student: {id: 1,name: Java,age: 18}

读取对象中的某个值:

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

读取整个对象:@ConfigurationProperties

package com.example.demo.entity;

@ConfigurationProperties("student")  //没有 $
@Component
@Setter
@Getter
@ToString
public class StudentComponent {
    //这里的属性名一定要和配置项相对应
    private int id;
    private String name;
    private int age;
}
@Autowired
private StudentComponent studentComponent;

配置集合

dbtypes1: 
  name: 
    - mysql
    - sqlserver
    - db2
dbtypes2: {name: [mysql,sqlserver,db2]}

properties 和 yml 的对比

  • properties 是以key=value的形式配置的键值对类型配置文件;yml使用类似json格式
  • properties是默认的配置文件格式,存在一定的冗余数据,yml可以解决数据冗余问题
  • yml通用性更好,支持更多的数据类型

为不同的环境设置配置文件

需求:
开发环境dev端口号:6666
测试环境test端口号:7777
生产环境prod端口号:8888

spring boot不同平台的配置规则:

  1. 必须有主配置文件,主配置文件名必须是 application.yml (.properties)
  2. 不同平台的配置文件,每个平台拥有一个配置文件,配置文件的名称要求application-xxx.后缀
    在这里插入图片描述
# 主配置文件 存放的是公共发配置项
# 在application.yml中设置运行环境
spring:
  profiles:
    active: dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值