java - 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
吗?
解决方案
当application.properties
从类路径加载时,类路径上的第一个被加载,类路径上的任何其他都被忽略。在您的情况下,文件 inmain-app/src/main/resources/application.properties
将出现在application.properties
.jar 之前的类路径中some-starter
。
顾名思义,application.properties
它用于配置您的应用程序,不应在启动器中使用。您应该配置应用程序中的所有属性,或者您可以更新您的启动器以包含一个EnvironmentPostProcessor
通过注册的spring.factories
并将一些默认属性添加到Environment
.
推荐阅读
- java - 从空 sharedpreference 中检索 json 数组时,java.lang.String 无法转换为 JSONObject 异常出现
- javascript - Javascript _ 点符号和括号符号
- android - 颤动路径错误 PATH="$PATH":"$HOME/.pub-cache/bin"
- finalcut - Final Cut Pro XML 文件中的水平和垂直单位
- ruby - 在 Ruby 中将 SVG 转换为绝对命令
- django - django 让我通过管理员而不是表单/shell 正确保存模型
- http - 如何在 Golang 中向 POST 请求添加参数、数据和标头?
- rest - 如何设计用于操作和可选返回值的 Rest API
- node.js - NodeJS 无法导入自定义模块,尽管它存在
- kotlin - 如何让 KTOR Logging 在 Android 上编译?