gpt4 book ai didi

java - 如何将 application.yml 中的映射注入(inject)到 Spring Boot 中的字段中?

转载 作者:行者123 更新时间:2023-12-02 09:20:49 25 4
gpt4 key购买 nike

这是针对这个问题的。

Spring Boot - inject map from application.yml

在这个问题中,他们有

info:
build:
artifact: ${project.artifactId}
name: ${project.name}
description: ${project.description}
version: ${project.version}

为了将其映射到他们的 java 代码中,他们建议使用 @ConfigurationProperties 注释。此注释的问题在于您必须创建一个New Class,然后在其顶部添加此注释。

但是我可以像 @Value 注释那样直接将其放到单个字段上吗?

假设我在这里需要它,如下所示:

// Someannotation or any other lean and clean way to get this
@Someannotation("${info}")
private Map<String, Object> map;

上面的代码应该给我一个 map ,其中键是build,值是某个带有工件、名称等字段的对象(当然,如果这有效,我会为此创建一个 POJO,而不是将其保留为普通对象)。

注意:@ConfigurationProperties 不适用于字段,这就是为什么我想看看是否有更精简和更干净的方法来做到这一点。

附注另外,我可以使用 @ConfigurationProperties 并创建一个新类,但我只是想看看我是否错过了一种更简单的方法来执行此操作,而无需创建完全是一个新的类。

最佳答案

我知道这样做的唯一方法是以 JSON 格式定义值部分:

app.collection.map.string.to.integer={one:"1", two:"2", three:"3"}

然后注入(inject)

@Value("#{${app.collection.map.string.to.integer}}")
private Map<String, Integer> mapStringToInteger;

来自 https://relentlesscoding.com/2018/09/09/spring-basics-dynamically-inject-values-with-springs-value/使用Spring的@Value注入(inject)映射

部分

关于java - 如何将 application.yml 中的映射注入(inject)到 Spring Boot 中的字段中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58700868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com