问题标签 [spring-boot-configuration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
668 浏览

java - SpringBootTest 配置中忽略的 Bean

我有以下结构;

主配置类;

和两个独立的配置类;

测试如下;

使用这种结构,我对 bean 的测试定义EtcDaoSomeBean被忽略,并且使用这些 bean 的主要上下文定义(来自MainApplication.class)。@SpringBootTest但是,如果我在like中包含这些单独的配置@SpringBootTest(classes = {ConfigA.class, ConfigB.class}),那么它可以正常工作。不允许@Include初始化这些单独的配置类中的 bean?或者罪魁祸首是我MainApplication.class和他们一起包含,但我需要其他配置,所以我必须以这种方式实现。

0 投票
3 回答
3682 浏览

spring - Spring Boot 配置属性的未解决占位符验证

给定一些具有不可解析占位符的应用程序配置,如下所示application.yml

当我使用@Value注释时,配置文件中的占位符会被验证,所以在这种情况下:

我得到一个IllegalArgumentException: Could not resolve placeholder 'missing-placeholder' in value "${missing-placeholder}/whatever". 这是因为该值是由直接设置的,AbstractBeanFactory.resolveEmbeddedValue并且没有任何东西可以捕获抛出的异常PropertyPlaceholderHelper.parseStringValue

但是,为了转向@ConfigurationProperties样式,我注意到缺少此验证,例如在这种情况下:

也不例外。我可以看到PropertySourcesPropertyValues.getEnumerableProperty通过注释捕获异常// Probably could not resolve placeholders, ignore it here并将无效值收集到其内部映射中。后续数据绑定不会检查未解析的占位符。

我检查了简单地将@Validatedand@Valid注释应用于类和字段并没有帮助。

ConfigurationProperties有什么方法可以保留在具有绑定的未解析占位符上引发异常的行为?

0 投票
4 回答
37435 浏览

java - 在 SpringBoot 中将 yaml 映射到对象 hashmap

我正在尝试在我的 Spring Boot 应用程序中将 yml 文件映射到带有 String Key 和 PromotionPolicy 值的 HashMap,并使用默认的 Spring Boot 实现来解析这些值,但 PromotionPolicy 对象仅包含默认值 [0, false, false]对于我尝试从地图中读取值的所有情况。

我的 yml 是:

我的模型是:

组件java类如下:

尝试在此处显示值:

我的输出如下:

虽然我希望结果包含我的 yml 中的值。我还尝试在我的 yml 中删除“PromotionPolicy:”行,但没有运气。

请求帮助了解如何将 yml 映射到自定义对象的 Map 中。

0 投票
0 回答
231 浏览

maven - SpringBoot 多种配置

我有以下结构(maven)

家长:

  • 通用(模块)
  • 服务器(模块)
  • 批次(模块)

  1. 全部(批处理、服务器)看到 Common
  2. Batch 看到 Server(和 Common 可传递:Batch -> Server -> Common)

对于 IntegrationTests 加载 ApplicationContext (需要弹簧上下文)我需要这样的东西:

Application.class 是主要的 SpringBoot 类(在 Common 模块中)

现在我想要批处理模块的其他@Configuration:

在上面的配置中,我无法在应用程序中导入 BatchConfiguration。

如何初始化bean:s​​ervice1,service2?

0 投票
2 回答
802 浏览

spring-boot - Git 上的 Spring Boot 配置

我正在关注一个博客:

https://github.com/jeroenbellen/blog-manage-and-reload-spring-properties

我正在使用 spring boot 开发服务,我想在运行时更改配置而不重新启动应用程序。

我已经运行了上述 github repo 中提到的代码。我无法理解示例服务如何了解配置服务。代码中没有任何内容将它们链接在一起。

此外,只有一个示例服务,但我有 10 个这样的示例服务,我如何为所有示例服务只使用一个配置服务

0 投票
1 回答
22 浏览

spring-boot-configuration - SpringBoot 外部配置

我正在尝试在 Spring Boot 项目中保留外部配置。所以我通过 a) 在 Git 上放置配置 b) 创建一个配置服务器来实现这一点。c) 应用程序从配置服务器获取配置。

但是我可以在不使用外部配置服务器的情况下实现这一点吗?我的意思是我的应用程序不能直接从 GIT 访问配置吗?

0 投票
0 回答
12 浏览

spring-boot - 多个外部配置 Sprintg 引导

我正在使用 Springboot 并基于这些开发 Web 服务。在我的服务中,我将配置保存在 git 而不是项目中,这样我就可以在运行时更改属性而无需重新启动应用程序。

我正在使用 ConfigServer 来获取配置,我的所有服务都是 Config Client。

但问题是我的配置文件是基于 -.properties 文件从 git 中获取的,因此例如。如果我的应用程序名称是 demo 并且活动配置文件正在测试,那么从 git 获取的配置文件是 demo-testing.properties。

但问题是我想拥有多个配置文件。那么我应该如何提及第二个配置文件呢?第二个配置文件也对其他服务通用吗?

所以实际上我想对位于 git 的许多服务使用相同的配置文件?

0 投票
1 回答
501 浏览

spring-boot - SPring Boot Services 之间的共享配置(在 git 上)

我正在开发 Spring Boot 服务。

所以假设我有 3 个服务 A、B、C,每个都有 dev 和 prod 配置文件。现在我将这些服务的配置保存在 GIT 并使用配置服务器来获取配置。

因此,当我在 prod 模式下运行 A 服务时,配置文件 A-prod.properties 正在被使用。

现在我想保留一些通用配置,所有 3 个服务都会使用这些配置,比如 common-prod.properties。我该怎么做?

我试过这个:

配置服务器:

我的属性是文件按以下顺序在 Git Repo 中:

0 投票
1 回答
9569 浏览

java - Spring Boot 配置处理器,前缀的重复 @ConfigurationProperties 定义

在 Spring Boot 应用程序中,我想使用@ConfigurationProperties具有相同前缀的注释来根据配置文件配置我的两个数据源。为什么 Spring Boot 配置处理器禁止它?gradle报错是:

笔记:

  • “运行方式-> Spring Boot App”在 STS 中有效
  • 没有 spring-boot-configuration-processor 依赖,gradle build 工作(但When using @ConfigurationProperties it is recommended to add 'spring-boot-configuration-processor' to your classpath to generate configuration metadata出现警告)

构建.gradle

应用程序属性

你好。申请

提前致谢

0 投票
6 回答
108004 浏览

docker - 部署到 Docker 时外部化 Spring Boot 属性

在我的 Spring Boot 应用程序中,我想将属性外部化以在 Docker 容器中运行。my-server/src/main/resources/application.yml首次部署时,应用程序会按预期加载和使用当前所在的属性。一切正常。

但是,我的问题是我需要这些属性可以根据需要进行更新,因此我需要application.yml在 Docker 容器上访问该文件一次。但是此时,它build/docker/在运行buildDocker任务之前不包含在目录中,因此在首次部署后不会被复制或访问。

因此,我尝试将 Yaml 文件复制到docker/构建目录中,将其复制到可访问目录 ( /opt/meanwhileinhell/myapp/conf),然后使用该spring.config.location属性将配置的位置传递给我的 Dockerfile 中的 Jar:

查看在 Docker 容器上运行的命令,我可以看到这是预期的:

但是,当我更新此文件中的属性并重新启动 Docker 容器时,它并没有获取更改。文件权限为:

文档指出:

配置自定义配置位置时,除了默认位置外,还会使用它们。在默认位置之前搜索自定义位置。

我似乎无法弄清楚我做错了什么或误解了什么,但可能更重要的是,这是为这种 Docker 场景外部化配置的正确方法吗?