2 -【 SpringBoot 配置方式 】- 9 多环境化配置 Profile

1 多环境化配置

在真实的应用中,常常会有多个环境(如:开发,测试,生产等),不同的环境数据库连接都不一样,这个时候就需要用到 spring.profile.active 的强大功能了,它的格式为 application-{profile}.properties/yml ,这里的 application 为前缀不能改,{profile} 是我们自己定义的。

Profile 是 Spring 对不同环境提供不同配置功能的支持,可以通过激活、 指定参数等方式快速切换环境。

1.1 创建 HelloController

package com.snow.snow_springboot;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 *
 * 第一个Controller测试类
 *
 * @author: yang
 * @Date:
 * @Description:
 * @version v1.0
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello() {
        return "hello, spring boot!";
    }

}

1.2 创建 application-dev.ymlapplication-test.ymlapplication-prod.yml ,内容分别如下

application-dev.yml

server:
  servlet:
    context-path: /dev

application-test.yml

server:
  servlet:
    context-path: /test

application-prod.yml

server:
  servlet:
    context-path: /prod

application.yml 配置文件中写入

server:
  port: 8081

spring:
  profiles:
    active: dev

这个时候我们在次访问 http://localhost:8081/hello 就没用处了,因为我们设置了它的 context-path=/dev ,所以新的路径就是 http://localhost:8081/dev/hello ,由此可以看出来我们激活不同的配置读取的属性值是不一样的。

在这里插入图片描述

2 三种激活方式:

  • 配置文件
spring:
  profiles:
    active: dev

浏览器输入 http://localhost:8081/test/hello
在这里插入图片描述

  • jvm 参数 -Dspring.profiles.active=test
    在这里插入图片描述

  • 打成 Jar 包后运行
    java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

3 yml 的多文档块方式

不用添加上面的三个 yml 文件,直接在 核心配置文件里面配置

server:
  port: 8081

spring:
  profiles:
    active: dev

--- # 三个短横线分割多个 profile 区(文档快)
spring:
     profiles: dev
server:
  servlet:
    context-path: /dev

---
spring:
  profiles: test
server:
  servlet:
    context-path: /test

---
spring:
  profiles: prod
server:
  servlet:
    context-path: /prod

4 外部命令引导

假设这样的场景,我们对已经开发完成的代码打包发布,期间在测试环境测试通过了,那么即可发布上生产,这个时候是修改 application.properties 的配置方便还是直接在命令参数配置方便呢,毫无疑问是后者更有说服力。默认情况下, SpringApplication 会将命令行选项参数(即: –property ,如 –server.port=9000 )添加到 Environment ,命令行属性始终优先于其他属性源。

测试:

进入到项目目录,此处以我本地目录为主:D:/ylx/springboot/
然后打开 cmd 程序,输入:mvn package
打包完毕后进入到:D:/ylx/springboot/ 目录中去,我们可以发现一个名为springboot-0.0.1-SNAPSHOT.jar 的包
接着在打开 cmd 程序,输入:java -jar springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=test --my1.age=32。仔细观察spring.profiles.active=test、my1.age=32 这俩配置的键值是不是似曾相识(不认识的请从开头认真阅读)
最后输入测试地址:http://localhost:8080/test/config/test 我们可以发现返回的JSON变成了 {“age”:32,“name”:“battcn”} 表示正确

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不知所起 一往而深

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

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

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

打赏作者

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

抵扣说明:

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

余额充值