【问题标题】:Static application.properties value works but dynamic one does not静态 application.properties 值有效,但动态值无效
【发布时间】:2020-08-06 04:29:02
【问题描述】:

我正在使用 application.properties 和我的 linux 环境来获得一些 12 因素的好处。我正在尝试获取一个 api 密钥来为我定义的自定义 application.properties 值工作,但它不起作用。

# application.properties

plenti.iaphub.webhooks.key=ACTUAL_VALUE_OF_API_KEY # This one works
# application.properties

plenti.iaphub.webhooks.key=${ENV_VARIABLE_HOLDING_API_KEY} # This one doesn't work

这是我尝试访问该值的方式

@Controller
@RequestMapping(path = "/iap")
public class IAPHUBController {

    @Autowired
    Environment env;

    @PostMapping(path = "/webhook")
    public ResponseEntity<String> webhook(@RequestHeader("X-Auth-Token") String iapAuthHeader) {
        String iaphubKey = env.getProperty("plenti.iaphub.webhooks.key");
        if (!iapAuthHeader.equals(iaphubKey)) {
            // this is an inauthentic request
            return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
        }

        return ResponseEntity.ok("Hello IAPHUB");
    }
}

这是我尝试访问 ENV 变量版本时遇到的错误

java.lang.IllegalArgumentException: Could not resolve placeholder

【问题讨论】:

    标签: spring spring-boot environment-variables application.properties


    【解决方案1】:

    只需设置一个名为PLENTI_IAPHUB_WEBHOOKS_KEY 的环境变量。这将覆盖 application.properties 文件中设置的值。您可以对任何属性执行此操作:将其转换为大写并用下划线替换点。

    【讨论】:

    • 检查理解。你是说如果我在 linux 上设置一个与application.properties 同名但大写的环境变量,并将. 替换为_,那将...正常工作?
    • application.properties中的值一样,是的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2018-12-10
    • 2014-08-16
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多