SpringBoot配置文件

一、配置文件有什么用?

  • 整个项目中所有重要的数据都是在配置文件中配置的,比如:

  • 数据库的连接信息(包含用户名和密码的设置)

  • 项目的启动端口

  • 第三方系统的调用秘钥等信息

  • 用于发现和定位问题的普通日志和异常日志等

  • 想象一下如果没有配置信息,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是非常重要的。

二、配置文件的两种格式

application.properties

application.yml

  • properties 可以和 yml 一起存在于一个项目当中。当 properties 和 yml 一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了“server.port”那么这个时候会以 properties 中的配置为主,也就是properties的优先级更高

  • 虽然.properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。

properties说明

properties 配置文件是最早期的配置文件格式,也是创建 Spring Boot 项目默认的配置文件。properties 是以键值的形式配置的, key 和 value 之间是以“=”连接的
  • properties 不支持中文

# 配置项目端口号
server.port=8084
# 链接数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

yml 说明

yml 是 YAML 是缩写,全称是 Yet Another Markup Language 翻译成中文就是“另一种标记语言”
也是现在 推荐使用的,大多数公司现在也在使用yml配置文件

ymI优点分析:

  • yml 是一个可读性高,写法简单、易于理解,它的语法和 JSON 语言类似。

  • yml 支持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。

  • yml 支持更多的编程语言,比如Java、 Golang、PHP、Python、Ruby、JavaScript、Perl 中。

  • 支持中文

ymI是树形结构的配置文件,基础语法是“key: value”,格的方式组成的,其中的空格不可省略

spring:
    datasource:
        url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
        username: root
        password: root

三、读取配置文件@Value

如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。
@Value 注解使用 “${}” 的格式读取
@Controller
@ResponseBody
public class ControllerTest {
    @Value("server.port")//注意这里使用引号 “”
    String port;
    @RequestMapping("/testProperties")
    public String testProperties() {
        return port;
    }
}
//上述代码访问http://127.0.0.1:8080/testProperties,浏览器输出 port
//这样的写法是错误的,必须使用 "${}" 的格式

@Controller
@ResponseBody
public class ControllerTest {
    @Value("${server.port}")//注意这里使用的格式
    String port;
    @RequestMapping("/testProperties")
    public String testProperties() {
        return port;
    }
}
//这样访问http://127.0.0.1:8444/testProperties,浏览器输出 8080
//正确了,一定要注意这个格式

四、yml进阶

(1) yml 配置不同数据类型及 null

# 字符串
myString1: Hello
myString1: 'Hello'
myString1: "Hello"
# 布尔值,true或false
myBoolean1: true
myBoolean2: false
# 整数
myInt1: 10
myInt2: 0b1010_0111_0100_1010_1110 # 二进制
# 浮点数
myFloat1: 3.14159
myFloat2: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

字符串

注意字符串的三种表示方法是有区别的

从上述结果可以看出:

  • 字符串默认不用加上单引号或者双引号

  • 单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据

  • 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

//yml文件的内容
myString1: Hello\n word.            # 结果没有换行
myString2: 'Hello\n word.'          # 结果没有换行
myString3: "Hello\n word."          # 结果换行

//Java程序
@Value("${myString1}")
String myString1;
@Value("${myString2}")
String myString2;
@Value("${myString3}")
String myString3;

@PostConstruct
public void postConstruct() {
    System.out.println("myString1:" +myString1);
    System.out.println("myString2:" +myString2);
    System.out.println("myString3:" +myString3);
}

//打印结果
myString1:Hello\n word.
myString2:Hello\n word.
myString3:Hello
 word.

(2) 配置对象

yml配置对象,如下图所示有两种写法

# 第一种:行外写法
student:
    id: 1
    name: Java
    age: 18
# 第二种:行内写法
student: {id: 1,name: Java,age: 18}#注意行内 :后仍需加空格

对象的读取

读取对象使用 @ConfigurationProperties("对象名")
@Autowired
Student student;

@PostConstruct
public void postConstruct(){
    System.out.println(student);
}

//打印结果:
Student(name=小明, age=12, gender=男)

(3) 配置集合

yml配置集合同样有两种写法
# 第一种:行外写法
dbtypes:
    name:
        - mysql
        - sqlserver
        - db2
# 第二种:行内写法
dbtypes: {name: [mysql,sqlserver,db2]}

对象的读取

集合的读取和对象一样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

// 这样name里面就会有上面配置的值
@Component
@Data
@ConfigurationProperties("dbtypes")
public class ListConfig {
    private List<String> name;
}

//这里的打印就会出现配置的值
@Component
public class ReadYml2 {

    @Autowired
    private ListConfig listConfig;

    @PostConstruct
    public void postConstruct() {
        System.out.println(listConfig.getName());
    }
}

(4) 不同环境的配置文件

通常命名配置文件是有格式的
开发环境: application-dev.yml
测试环境: application-prod.yml

一般开发中会有三个yml配置文件,application-dev.ymlapplication-prod.yml 分别表示开发配置和测试配置。application.yml 表示指定使用哪一个配置

五、更多的配置设置

要查看 Spring Boot 更多系统配置项,访问官网:

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shn!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值