从0开始学习SpringCould(8)--SpringBoot 分环境读取配置文件

来源:互联网 发布:淘宝联盟机器人免费版 编辑:程序博客网 时间:2024/05/21 15:48

上一篇文件说到,SpringBoot 多环境配置
多环境配置主要对配置数据源、redis、MongoDB、eureka等等进行配置,这些都是系统本身的东西,真是使用场景中还会有一些业务参数需要放到配置文件中,如调用的接口地址、访问一些系统的APP_ID等,这些也需要自动区分环境来获取。

本篇简单介绍,SpringBoot分环境读取配置文件;

SpringBoot读取配置文件的方法有很多种,本文只介绍一种:使用映射类读取配置;

一、引入maven

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-configuration-processor</artifactId>    <optional>true</optional></dependency>

不需要注明version,会根据springboot版本自动选择


二、创建配置文件

resources 目录下创建配置文件

config-dev.properties 开发环境
config-test.properties 而是环境

并在配置文件中随便定义一个值用于测试
如:

config-dev.properties 中写入
nowProfile=dev

config-test.properties 中写入
nowProfile=test

现在resources目录下已经有两个自定义配置文件,两个配置文件中都包含nowProfile这个KEY并且等于不同的值


三、编写映射类

import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;/** * 从配置文件中读取参数 * Created by zhoudong on 2017/12/21. */@Component@ConfigurationProperties(prefix="")@PropertySource("classpath:config-${spring.profiles.active}.properties")public class Config {    private String nowProfile;    // 此处忽略get and set 请自行生成}
  • ConfigurationProperties 表示告诉SpringBoot 它可以把配置文件中的哪些东西转换成对象

    • prefix 前缀,如hexun.pay,就是表示把配置文件中hexun.pay.**的KEY全部映射到本类中;
  • PropertySource 配置文件的路径
    可以使用${}获取application.yml中的配置,也是实现分环境自动读取配置文件的关键

    • ${spring.profiles.active} 如果搞不明白什么意思,建议返回查看上一篇文章


四、开启配置文件映射功能

在${项目名}Application.java的类名上方添加以下配置即可
@EnableConfigurationProperties(Config.class)

附图
这里写图片描述


五、测试

5.1、注入

被Spring管理的类使用前要注入,这个不需要解释

@Autowiredprivate Config config;


5.2、编写测试接口

/**  * 测试读取配置文件  * @return  */ @GetMapping("/config") public @ResponseBody String config(){     return "当前环境:" + config.getNowProfile(); }


5.3、在swagger查看结果

这里写图片描述


5.4、切换运行环境(此步不太了解请参阅上一篇)

这里写图片描述

再次运行项目,并重新测试

这里写图片描述


可以看到,返回的当前环境已经更换为:dev


本篇结束,谢谢!

更多内容请关注微信公众号:


这里写图片描述

阅读全文
0 0
原创粉丝点击