Spring Boot 读取环境变量方法

配置信息读取

a. Environment 读取

所有的配置信息,都会加载到Environment实体中,因此我们可以通过这个对象来获取系统的配置,通过这种方式不仅可以获取application.yml配置信息,还可以获取更多的系统信息

使用姿势如下:

@RestController
public class DemoController {
    @Autowired
    private Environment environment;

    @GetMapping(path = "show")
    public String show() {
        Map<String, String> result = new HashMap<>(4);
        result.put("env", environment.getProperty("server.port"));
        return JSON.toJSONString(result);
    }
}

b. @Value 注解方式

@Value注解可以将配置信息注入到Bean的属性,也是比较常见的使用方式,但有几点需要额外注意

如果配置信息不存在会怎样?
配置冲突了会怎样(即多个配置文件中有同一个key时)?

使用方式如下,主要是通过 ${},大括号内为配置的Key;如果配置不存在时,给一个默认值时,可以用冒号分割,后面为具体的值

@RestController
public class DemoController {
    // 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,可以使用环境变量来配置应用程序的属性。然而,有一些限制和注意事项需要注意。 首先,如果你使用点分隔的环境变量命名,例如`server.port=80`,在Kubernetes环境变量或者docker-compose.yaml中指定,Spring Boot可能无法正确识别这些变量。这是因为大多数操作系统不允许使用点分隔的键名作为环境变量,但你可以使用下划线代替(例如,`SERVER_PORT`代替`server.port`)\[2\]。 其次,如果你使用的是Alpine镜像,使用`sh -c`启动JAR文件时,可能会忽略点分隔的环境变量。这可能会导致无法正确配置Spring Boot应用程序的属性。你可以参考链接\[3\]中的解决方案。 综上所述,为了在Spring Boot中正确使用环境变量,你可以遵循以下几个步骤: 1. 使用下划线代替点分隔的键名,例如`SERVER_PORT`代替`server.port`。 2. 确保在Kubernetes环境变量或者docker-compose.yaml中正确指定环境变量。 3. 如果使用Alpine镜像,避免使用`sh -c`启动JAR文件,或者参考链接\[3\]中的解决方案。 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [spring boot 无法读取点分隔的环境变量](https://blog.csdn.net/hhy107107/article/details/128054678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值