Spring Boot-从application.yml注入映射
在这个问题上,他们
info:
build:
artifact: ${project.artifactId}
name: ${project.name}
description: ${project.description}
version: ${project.version}
为了将其映射到java代码中,他们建议使用@configurationproperties
注释。这个注释的问题是,您必须创建一个new class
,然后在上面添加这个注释。
这样说我需要它:
// Someannotation or any other lean and clean way to get this
@Someannotation("${info}")
private Map<String, Object> map;
上面的代码应该给出一个映射,其中key是build
,value是一些带有artifact、name etc
等字段的对象(当然,如果这样做有效,我将为此创建一个POJO,而不是将其作为普通对象)。
注意:@configurationproperties
对字段不起作用,这就是为什么我想看看是否有一种更精简、更干净的方法来实现这一点。
附注。此外,我也可以使用@configurationproperties
并创建一个新类,但我只是想看看是否遗漏了
在不创建一个新类的情况下创建一个更简单的方法。
我知道的唯一方法是用JSON格式定义值部分:
app.collection.map.string.to.integer={one:"1", two:"2", three:"3"}
然后注射
@Value("#{${app.collection.map.string.to.integer}}")
private Map<String, Integer> mapStringToInteger;
摘自https://relentlesscoding.com/2018/09/09/spring-basics-dynamics-inject-values-with-springs-value/一节中用Spring的@value注入地图
问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java
我有一个带有以下的spring boot应用程序--基本上取自这里: 我可以注入特定的值,例如。 然而,我想注入整个地图,即如下所示: 那(或类似的事情)可能吗?显然,我可以直接加载yaml,但我想知道spring是否已经支持了一些东西。
我有下面的映射器类,我想在其中使用。我正在尝试构造函数注入,但不起作用,并且正在打印。 mapStruct实现类 如果我使用使用字段注入,这样它就可以正常工作。这意味着Spring不支持类的构造函数注入。是因为类不能直接实例化,需要子类来实例化吗? 有没有什么方法可以在实现类中创建一个构造函数,如下所示: 这样,构造函数注入应该可以工作。
我正在尝试将yml文件映射到Spring boot应用程序中具有字符串键和PromotionPolicy值的HashMap,并使用默认的Spring boot实现来解析这些值,但当我尝试从映射中读取值时,PromotionPolicy对象只包含所有实例的默认值[0,false,false]。 我的yml是: 我拥有的模型是: 组件java类如下: 尝试在此处显示值: 我的输出如下: 而我希望结果包
到底是怎么回事? 提前谢了。
我在寻找更“改进的方法”来实现这一点,我有一种方法,从一个id中获取所有记录,然后“映射”到一个类中,我有大约200个“标记”要映射,这将是一个非常长的if链。。。例子: