SpringBoot中自定义属性的问题

问题描述 投票:0回答:1

SpringBoot版本:2.7

application.yml:

urban:
  cas:
    ticket-url: http://${URBAN_CAS_TICKET_URL:10.64.9.33:8780}/cas
@Value("${urban.cas.ticket-url}")
private String ticketUrl;

环境变量中未设置URBAN_CAS_TICKET_URL属性时,打印结果如下:

http://10.64.9.33:8780/cas

但是,如果在环境变量中设置了 URBAN_CAS_TICKET_URL:

URBAN_CAS_TICKET_URL=127.0.0.1:8080

打印结果变为:

127.0.0.1:8080

这不是期望的结果,因为它丢失了开头的“http://”和结尾的“/cas”。

我想知道为什么它会丢失“http://”和“/cas”?或者我怎样才能避免这种损失?

spring-boot
1个回答
0
投票

在您的情况下,您将使用环境属性

urban.cas.ticket-url
完全覆盖属性
URBAN_CAS_TICKET_URL
。在 Spring 中,您可以使用下划线代替属性名称中的点和破折号,使这两个属性相同。

您应该考虑使用两个不同的名称(例如,

urban.cas.ticket-url
urban.cas.host
)。这应该可以解决问题。

来源: Spring Boot 外部化配置

如果您使用环境变量而不是系统属性,大多数操作系统不允许使用句点分隔的键名称,但您可以使用下划线代替(例如,SPRING_CONFIG_NAME 而不是 spring.config.name)。有关详细信息,请参阅从环境变量绑定。

© www.soinside.com 2019 - 2024. All rights reserved.