Spring中如何从父仓库继承application.yml?

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

我有一个名为 ParentA 的父存储库和一个名为 ChildA 的子存储库。 ParentA 有几个项目,其中一个是 ProjectA,在 ProjectA/pom.xml 中存在“spring-boot-starter-web”的依赖项。

结构:

家长A

├── 项目A

│ └── pom.xml

│ └── src/main/resources/application.yml

子A:父A

│ └── src/main/resources/application.xml

我现在希望我的 ChildA 使用父 application.yml 及其自己的 application.yml 中的设置,以便从 LogBack 设置以下属性。

logging:
  logback:
    rollingpolicy:
      total-size-cap: 100KB
      max-history: 1
      max-file-size: 1KB

这些设置应该从父项目继承。但由于某种原因,它们并非如此。如果我在 src/main/resources/ 或 ProjectA/src/main/resources/ 中有 application.yml 并不重要。似乎什么都不起作用。 现在我正在尝试在 ProjectA 中创建一个 logback.xml 文件。然而,Spring 声称拥有的默认设置是它只向控制台生成日志,而不附加到文件。即使我根本没有配置或更改默认值,我也看到了非常不同的行为。

所以我的两个问题是:

  • 为什么父存储库中的 application.yml 似乎不适用于我的子存储库?
  • Spring 日志记录的默认行为为何与文档不符?

我使用的是Spring Boot v3.3.4,我指的是这两个链接: https://docs.spring.io/spring-boot/reference/features/logging.html https://docs.spring.io/spring-boot/how-to/logging.html

java spring spring-boot spring-logback
1个回答
0
投票

我的解决方案是让一个配置类除了标准的 application.properties 之外还加载父级的“自定义”属性。

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:parent.properties")
public class ParentPropertiesLoader {
}

您可能会猜到属性类称为parent.properties,放置在父项目资源中。 这对我来说非常有效。 我认为 yaml 也能起到同样的作用。

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