【Spring Boot】之配置文件详解

🏀🏀🏀来都来了,不妨点个关注!
🎧🎧🎧博客主页:欢迎各位大佬!
在这里插入图片描述

Spring Boot的配置文件

1. 配置文件的作用

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

  • 数据库的连接信息(包含⽤户名和密码的设置);
  • 项⽬的启动端⼝;
  • 第三⽅系统的调⽤秘钥等信息;
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等。

1.1 配置文件里的配置类型的分类

  • 系统配置项 如:server.port (给系统框架使用的)
  • 用户自定义配置项 如:myobj (开发者自己使用)

2.配置文件的类型

Spring Boot的配置文件主要分为以下两种格式:

  • . properties
  • . yml

在这里插入图片描述
其中,properties是老版的配置文件,同时也是创建Spring Boot项目默认的配置文件,而yml是新版的配置文件,一般一个项目中只有一种类型的配置文件,值得注意的是,如果一个项目中同时有.properties和.yml的配置文件,并且配置文件中出现了相同的配置,会以properties为主,即 .properties配置文件的优先级更高,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
如下例子:
在这里插入图片描述

3. properties配置文件说明

properties是以键值的格式配置的,其中,key和value之间是“=”连接的,示例代码如下:

#系统配置项
server.port=8088

#mysql配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog
spring.datasource.username=root
spring.datasource.password=030521
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

读取配置文件中key对应的value:
如果我们想主动读取配置文件中的内容,可以使用@Value注解
@Value注解使用"${key}"格式读取,具体代码实现如下:

  @Value("${server.port}")
     private String myport;

     @PostConstruct
     public void doPostConstruct() {
         System.out.println("server port -> " + myport);
     }

这里以读取系统配置项server.port为例。其中@PostConstruct注解加在方法上面表示在初始化Spring容器的时候执行该方法。
properties的优缺点分析:
优点:配置文件写法清晰:key=value,适合初学者。
缺点:写法比较臃肿,如我们上述配置连接数据库的相关操作:
在这里插入图片描述

要解决上述问题,我们可以使用yml配置文件来解决。

4. yml配置文件说明

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
yml优点分析:

  • yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
  • yml⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
  • yml ⽀持更多的编程语⾔,它不⽌是 Java中可以使⽤,在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中也可以使用。

4.1 yml的基本语法(使用冒号和空格的格式 )

yml 是树形结构的配置⽂件,它的基础语法是“key: value”,其中 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。示例如下:

server:
  port: 8080

使用yml连接数据库(与properties对比):
yml:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/blog
    username: root
    password: 030521
    driver-class-name: com.mysql.cj.jdbc.Driver

properties:

#mysql配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog
spring.datasource.username=root
spring.datasource.password=030521
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

4.2 yml读取配置内容说明

yml读取配置的方式和properties读取的方式是一样的,使用@Value注解即可,这里我们不做赘述,下面我们介绍yml读取对象和取对象的操作:
与properties不同,yml配置文件中可以存储对象,示例代码如下:
存储对象:

# 自定义对象
my:
  name: xiaoxin
  height: 168

也可以写一行:

my: {name: xiaoxin,height: 168}

读取对象:
使用@ConfigurationProperties注解读取。具体格式如下:

@ConfigurationProperties(prefix = "key ")

具体代码如下:

@Data
@ConfigurationProperties(prefix = "my")
@Component
public class User {
      String name;
      int height;
}
@RestController 
public class UserController {

    @Autowired
    private User user;

    //随着SpringBoot的加载而加载
    @PostConstruct
    public void doPostConstruct() {
        System.out.println(user.toString());
    }
}

结果如下:
在这里插入图片描述

5. Spring Boot读取指定的配置文件

有时我们需要读取指定的配置文件,此时就需要在application.properties或application.yml文件下指定具体的配置文件,具体步骤如下:
1.在application.properties和application.yml同级目录下创建applicat-xxx.properties或application-xxx.yml的文件。
2.在application.properties或application.yml文件中添加如下配置:

#指定运行环境的配置文件
spring.profiles.active=dev

其中的dev则是我们命名的配置文件,即application-dev.yml,值得注意的是,如果我们不小心将配置文件名写成如 aaa.yml的格式,不会出现报错的情况,但相应的我们的配置也不会生效,这就得提到Spring Boot的核心思想了:约定大于配置。 我们要按照Spring Boot约定的配置命名。

以上就是本文的全部内容了,感谢支持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值