Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

点击关注公众号,更多资讯及时推送↓

引言

在日常开发中,我们可能经常会碰到要调试代码或者切换到线上环境去查看问题。
在没有配置环境切换的情况下,我们需要来回修改各种配置地址,例如 MySQL、Redis。。。等等
所以,当你看完本文,你可以学到如何对一个SpringBoot单体项目进行改造,通过Maven选择环境来实现动态切换


一、初始项目配置

在你的Resource 文件夹下的 application.yml 配置文件可能是如下样式,现在需要进行环境的切换,就需要一个个的去修改地址。


server:
  port: 8080
  tomcat:
    max-connections: 20
    threads:
      max: 20
      min-spare: 10
    accept-count: 10
spring:
  config:
    name: tomandcat
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xxxdb?serverTimezone=GMT%2B8
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource


二、使用”Profile” 来实现环境切换


2.1创建不同环境的配置文件(如开发、测试、生产环境)

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

在Resource包下创建我们多种环境的配置文件 application-dev.yml 、application-test.yml、application-prod.yml

这时候你可能会产生疑问:为什么我这样创建文件,就可以让Spring Boot 读到呢??
答:这是因为 SpringBoot 它是一个整合框架,同时它的开发理念就是我们常说的约定>配置>编码,从而提高我们程序开发的效率。

注:配置文件的优先级:

bootstrap.properties > bootstrap.yml > application.properties > application.yml

让我们来看看 application-dev.yml 文件的具体参数:(剩余文件类似)

# 自定义配置 为了等下验证读取的配置文件环境
appName: tomandcat-dev

server:
  port: 8091

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xxx01?serverTimezone=GMT%2B8
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

2.2 POM文件添加配置


<!-- 配置maven占位符-->
<profiles>
    <!-- 配置需要切换的环境 -->
    <profile>
        <id>dev</id>
        <!-- properties下的每个子标签我们可以理解为一个配置 -->
        <properties>
            <!-- 标签名为自定义,和我们平时写properties一样,同样我们也可以定义一个或多个(key, value)配置-->
            <runtime-profile>dev</runtime-profile>
          <!-- 如果你需要配置一些变量,你可以在这里设置一个k-v数据,在具体的环境变量中读取这个数据或者你也可以在具体的配置文件中直接设置(如application-dev.yml) -->
            <config-addr>127.0.0.1:8848</config-addr>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <runtime-profile>prod</runtime-profile>
            <config-addr>127.0.0.1:8848</config-addr>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <runtime-profile>test</runtime-profile>
            <config-addr>127.0.0.1:8848</config-addr>
        </properties>
    </profile>
</profiles>

2.3 配置占位符生效(假如你是通过Maven插件来进行动态切换的,你需要添加如下内容, 否则跳过)

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

<build>
    <!-- 配置所有的yml文件中占位符生效, 假如我们是手动来更新application.yml文件我们可以不配置,手动更新指的是我们在application.yml直接指定profile的值如dev、prod-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 会生效-->
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

2.4 修改我们的application.yml文件

手动的话无需在pom中配置profiles,SpringBoot 会自动读取到对应的环境

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

三、结果测试并验证:

我是采用的maven插件勾选环境来动态切换的;

3.1 编写验证类

@RestController
@RequestMapping("/api")
public class HelloWord {

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

    @RequestMapping("/hello")
    public String test(){
        return "hello word! - " + port + " - " + appName;
    }
}

3.2 验证dev环境

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

启动项目,访问http://localhost:8091/api/hello

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

3.3 切换为prod环境

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

四、总结

以上就是本文的所有内容,本文仅介绍了SpringBoot单体项目如何实现多环境动态切换,如有错误之处,还请各位读者多多指正,感谢!

原文始发于微信公众号(Java技术前沿):Spring Boot入门:实现多环境配置文件切换,轻松搞定不同环境部署问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/299503.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!