SpringBoot+Vue项目系列教程-02-YML配置文件的使用

前言

上一篇文章详细讲解了SpringBoot项目的创建过程,以及如何对外提供接口服务。

我们访问的地址是:http://localhost:8080/hello,如果细心的话,还可以从控制台看到端口为8080的信息。8080端口是默认的端口,如果需要修改端口怎么处理?

SpringBoot有一个默认的配置文件application.properties,在这个文件中不仅可以配置端口,还可配置许多其它的配置项,如web、数据库、缓存、spring核心配置等,具体的配置项在官网https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html。

这是必学的内容,实际项目中一定会用到。修改端口是为了抛砖引玉,目的是为了在有配置需求的时候,可以通过文档查到自己想要的配置项。

SpringBoot默认使用的配置文件是application.properties,但官方推荐使用的是application.yaml,二者在作用上是相同的,但在语法格式上有较大区别。yaml格式的配置文件更简洁、更符合面向对象的思想,所以这里只对yaml文件做简要的介绍,propertirs格式的就不在介绍了,相信它很快就会被技术进步的车轮碾压过去。

另外,开发、测试、生产环境下的配置文件肯定是不一样的,如何进行多环境配置的切换也是必须要掌握的内容。

这次的全部代码会在文末附上下载地址,代码中注释也尽可能详细。

要掌握的内容

  1. 项目结构介绍
  2. 如何修改端口号
  3. 多个路径配置文件的优先级
  4. yaml简介
  5. 多环境切换配置

项目结构介绍

项目结构用一个图就能说完了,除了红框内容,.mvn、HELP.md、mvnw、mvnw.cmd可以删除,项目照样运行,建议尝试一下。

SpringBoot+Vue项目-02-YML配置文件的使用

 

如何修改端口号

创建完SpringBoot项目之后,在/src/main/resources目录下,删掉application.properties,然后同样位置创建application.yaml,或者application.yml,二者都是系统能识别的yaml文件。

内容如下

SpringBoot+Vue项目-02-YML配置文件的使用

 

把端口8080换成其它的,如8090,然后重启服务,会看到如下图,说明服务已经使用了8090端口

SpringBoot+Vue项目-02-YML配置文件的使用

 

多位置配置文件的优先级

其实上面的配置文件只是创建项目时默认创建的配置文件,这个文件还可以放置在项目的其它位置,而且不同的位置有不同的加载优先级。

SpringBoot项目启动时,会从4个位置加载文件,这4个位置分别是:

  1. 项目根目录/config/application.yml
  2. 项目根目录/application.yml
  3. 项目根目录/src/main/resources/config/application.yml
  4. 项目根目录/src/main/resources/application.yml

接下来是重点:

  1. SpringBoot加载优先级与上面顺序一致,高优先级会覆盖低优先级的配置。
  2. SpringBoot会加载全部位置的配置文件,配置会互补。

通俗点解释:

  • 都有的配置项,用优先级高的;
  • 部分有的配置项,谁有用谁

验证配置文件优先级

4个位置都放置只有端口号不同的配置文件,分别运行和删除配置文件,看控制台输出的端口号。

验证配置互补

只在默认配置文件(/src/main/resources/application.yml)中增加访问路径的配置项

SpringBoot+Vue项目-02-YML配置文件的使用

 

在浏览器中的体现

SpringBoot+Vue项目-02-YML配置文件的使用

 

可以看出,优先级为1的配置文件中的端口号生效了,优先级为4的路径生效了,覆盖和互补都得到了体现。

多说一句:你觉得SpringBoot是怎么实现覆盖与互补的功能的呢?

yaml介绍

关于yaml的历史与发展就不多说了,直接上干货。

语法

  1. 大小定敏感
  2. 使用缩进表示层级关系
  3. 冒号后必须有空格
  4. 可以表示键值对、对象、列表
  5. yml文件中使用#注释
 # -----这一部分展示了yml的格式,记住冒号后面必须有一个空格
 #1、用键值对表示简单的对象
 age: 12
 
 #2、使用缩进表示对象
 person:
   name: 张三
   age: 22
 #3、对象的行内写法
 user: {name: 李四, age: 33}
 #4、数组的缩进写法
 animals:
   - dog
   - cat
   - fish
   - tiger
 #5、数组的行内写法
 animals2: [dog, cat ,fish, tiger]
 
 #6、包含复杂对象的数组
 familys:
   -
     id: 1
     name: 无忌
     age: 23
   -
     id: 2
     name: 张三丰
     age: 95
 
 familys2: [{id: 1,name: 无忌, age: 23},{id: 2,name: 张三丰, age: 95}]

既然可以在yml中定义数据,也可以把数据注入到实体类中。

在/com/hgt/pojo下面创建Person.java,如果目录请自己创建

注入

 package com.hgt.pojo;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
 @Component
 @ConfigurationProperties(prefix = "person")
 public class Person {
     private String name;
     private Integer age;
 
     public Person() {
     }
 
     public Person(String name, Integer age) {
         this.name = name;
         this.age = age;
     }
 
     public String getName() {
         return name;
     }
 
     public void setName(String name) {
         this.name = name;
     }
 
     public Integer getAge() {
         return age;
     }
 
     public void setAge(Integer age) {
         this.age = age;
     }
 
     @Override
     public String toString() {
         return "Person{" +
                 "name='" + name + '\'' +
                 ", age=" + age +
                 '}';
     }
 }

注解的作用:

  • @Component:表明一个类会作为组件类,并告知Spring要为这个类创建bean。
  • @ConfigurationProperties(prefix = "person"):将配置文件中的person对象注入到该对象中

单元测试代码

 package com.hgt;
 
 import com.hgt.pojo.Person;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
 class MainAppTests {
     @Autowired
     private Person person;
     @Test
     void contextLoads() {
         System.out.println(person);
     }
 }

输出

SpringBoot+Vue项目-02-YML配置文件的使用

 

多环境切换配置

工作中,开发环境、测试环境、生产环境用到的端口、数据库连接参数都是不一样的,比如开发与测试一般都本地的数据库,如果每次都要修改配置文件肯定是不合适的。

多环境的切换可以在多个配置文件中进行,也可以在一个配置文件中完成。

通过多配置文件操作时,要在配置文件的文件中添加后缀,代表不同的环境。如application-dev.yml代表开发环境,同理application-test.yml和application-prod.yml代表测试和生产环境。而application.yml代表主环境,在主环境中通过sping.profiles.active=dev/test/prod来激活对应的环境。

通过单个配置文件操作时,只是把不同的环境配置在了主环境中,最终还是通过sping.profiles.active=dev/test/prod来激活对应的环境。

既然一个文件可以完成,又何必要用多文件呢?所以这里只介绍单配置文件下的多环境切换。

 #-----演示多环境的切换,
 
 #  多环境配置,激活生产环境
 spring:
   profiles:
     active: prod
     
 # 注意:多个环境之间使用---分隔
 #开发环境
 ---
 server:
   port: 8081
 spring:
   config:
     activate:
       on-profile: dev
 
 
 #测试环境
 ---
 server:
   port: 8082
 
 spring:
   config:
     activate:
       on-profile: test
 
 #生产环境
 ---
 server:
   port: 8083
 spring:
   config:
     activate:
       on-profile: prod

验证多环境切换时,应该其它位置的配置文件全部注释掉。

运行主程序

SpringBoot+Vue项目-02-YML配置文件的使用

 

主环境中,选择的也是prod,符合预期。

 

总结

本章的内容比较简单,经过验证之后,可以收藏起来,下次使用的时候能想起来从这里找就行了,学习技术不用死记,用的多了自然就记住了。

写的匆忙,难免有疏漏之处,如果有不明白的地方,请留言,我会在后面补充出来。

明天周末,好好休息。

代码地址:https://github.com/316620938/shop-springboot.git

相关文章

SpringBoot+Vue项目-01-创建项目后端

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值