【问题标题】:Could not resolve placeholder 'server.port' in value "${server.port}"无法解析值“${server.port}”中的占位符“server.port”
【发布时间】:2019-02-14 00:03:22
【问题描述】:

将 jHipster 项目从 4.14.5 版升级到 5.8.1 版后,当我尝试运行应用程序时出现此错误:

上下文初始化期间遇到异常 - 取消 刷新尝试: org.springframework.beans.factory.BeanCreationException:错误 创建文件中定义的名称为“loggingConfiguration”的bean [\config\LoggingConfiguration.class]:

bean 创建过程中出现意外异常;嵌套异常是 java.lang.IllegalArgumentException:无法解析占位符 值“${server.port}”中的“server.port”

您知道问题的原因是什么吗?

【问题讨论】:

  • 请发布您的 yml 和 LoggingConfiguration.java 类。

标签: java spring jhipster


【解决方案1】:

Spring 在各个位置查找 @Value 注释内指定的占位符。由于您可能正在运行 Spring Boot 应用程序,因此您可能需要检查 documentation 以获取外部配置。

我敢打赌,您确实将它指定为命令行参数,或在 application.properties 资源文件中。

顺便说一句,.(点)不是问题。

【讨论】:

  • 是的,这是一个 Spring Boot 应用程序。这发生在 LoggingConfiguration 文件中,它是由 jHipster 生成的,我没有在 .yml 文件中更改任何内容。
  • @SemirDeljić 也许你没有,但 jHipster 做到了。服务器端口不是必须手动设置的吗?
  • @SemirDeljić 我的建议是重新生成应用程序。
  • 应用程序在单独的分支上通过 jHipster 升级重新生成,这就是升级过程的工作方式。之后,我将其合并到本地分支。
  • @SemirDeljić mmmh,你确定你在合并过程中没有丢失任何东西吗?
【解决方案2】:

我遇到了同样的问题,我只是通过将 server.port 属性添加到 application.properties

来解决这个问题

MultiplicationController.java

@Slf4j
@RestController
@RequestMapping("/multiplications")
@CrossOrigin(origins = "http://localhost:9090")
final class MultiplicationController {

    private final MultiplicationService multiplicationService;

    private final int serverPort;

    @Autowired
    public MultiplicationController(final MultiplicationService multiplicationService,
            @Value("${server.port}") int serverPort) {
        this.multiplicationService = multiplicationService;
        this.serverPort = serverPort;
    }

    @GetMapping("/random")
    public Multiplication getRandomMultiplication() {
        log.info("Generating a random multiplication from server @ {}", serverPort);
        return multiplicationService.createRandomMultiplication();
    }
}

application.properties

server.port=8080

【讨论】:

    【解决方案3】:

    我只是遇到了同样的问题。 当我用“_”替换“.”时,它实际上起作用了 所以我的方法:

    @Value("${server_port")
    Integer port;
    

    和我的 properties.yml

    server:
      port: 1234
    server_port: 1234
    

    当然,冗余并不理想,但@Value 似乎无法处理“.”。

    【讨论】:

    • 感谢您的努力,但我认为这不是解决问题的正确方法。
    猜你喜欢
    • 2014-07-17
    • 2018-12-14
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多