首页 > 解决方案 > Spring Boot 不适用于依赖的 application.properties

问题描述

我正在使用 Spring Boot 2.2.9.RELEASE。我有主应用程序和一些简单的启动器(仅使用spring-actuator功能),其some-starter/src/main/resources/application.properties文件中有一些属性:

management.server.port=9000
management.server.ssl.enabled=false
management.endpoints.enabled-by-default=false
management.endpoint.health.enabled=true
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=health

我已经将启动器导入到我的主应用程序中,并且我相信 healthcheck 端点应该与端口9000和路径一起使用/health(就像那样localhost:9000/health)。

但事实并非如此。但是,它适用于我的主应用程序中具有相同属性的情况main-app/src/main/resources/application.properties

Spring Boot中的属性覆盖是否有问题?我应该通过类似的方式配置我的资源maven-resources-plugin吗?

标签: javaspring-bootspring-boot-actuatormaven-resources-pluginspring-boot-starter

解决方案


application.properties从类路径加载时,类路径上的第一个被加载,类路径上的任何其他都被忽略。在您的情况下,文件 inmain-app/src/main/resources/application.properties将出现在application.properties.jar 之前的类路径中some-starter

顾名思义,application.properties它用于配置您的应用程序,不应在启动器中使用。您应该配置应用程序中的所有属性,或者您可以更新您的启动器以包含一个EnvironmentPostProcessor通过注册的spring.factories并将一些默认属性添加到Environment.


推荐阅读