zwllxs 2019-01-13 11:53 采纳率: 0%
浏览 2827

spring boot里properties文件无法解析占位符${}

如图:


domain=aaa
config.notifyBaseUrl=test ${domain}/notify/${random.value}-${spring.profiles.active}


按里说,${domain}会被解析成aaa,随机数也会被解析出来,但是实际情况下,我还是照原样输出的,${domain}还是${domain},我是有哪里没配置好的吗?

同样问题我也已经发到stackOverFlow了
https://stackoverflow.com/questions/54165884/spring-boot-can-not-be-resolved-in-properties-file

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 17:16
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Spring Boot中,如果你尝试使用占位符${variableName}来获取值,但发现结果与预期不符,可能的原因包括:

    1. 环境变量: 如果你的应用程序依赖于环境变量(例如,通过ENV_VAR=${value}),那么你可能没有正确设置这些环境变量。确保你在运行时设置了所有必要的环境变量。

    2. 数据源: 在某些情况下,如果数据库连接池或其他资源在运行时不可用或未初始化,可能会导致${variableName}无法正常工作。

    3. 错误处理: 一些错误处理逻辑可能导致${variableName}无法解析。检查是否有任何错误处理语句覆盖了${variableName}。

    4. 编译器和运行时版本不兼容: 如果你的项目使用的是不同的编译器版本或运行时版本,这可能导致${variableName}不能正确解析。

    解决方法:

    • 确保所有的环境变量都已经正确设置。
    • 检查并确认你的数据库连接是否有效。
    • 在你的应用中添加适当的错误处理机制来捕获和报告错误。
    • 如果你需要在运行时获取环境变量,考虑使用System.getenv()而不是直接使用${variableName}。

    代码示例:

    Properties properties = new Properties();
    try {
        // 从环境变量中加载properties
        properties.load(new FileInputStream("your.properties"));
        System.out.println("Environment variables: " + properties);
    } catch (IOException e) {
        // 处理读取失败的情况
    }
    

    确保上述代码适用于你的环境,并且根据实际情况进行调整。

    评论

报告相同问题?