我有一个带有以下application.yml
的spring boot应用程序--基本上取自这里:
info:
build:
artifact: ${project.artifactId}
name: ${project.name}
description: ${project.description}
version: ${project.version}
我可以注入特定的值,例如。
@Value("${info.build.artifact}") String value
然而,我想注入整个地图,即如下所示:
@Value("${info}") Map<String, Object> info
那(或类似的事情)可能吗?显然,我可以直接加载yaml,但我想知道spring是否已经支持了一些东西。
您可以使用@configurationproperties
注入映射:
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class MapBindingSample {
public static void main(String[] args) throws Exception {
System.out.println(SpringApplication.run(MapBindingSample.class, args)
.getBean(Test.class).getInfo());
}
@Bean
@ConfigurationProperties
public Test test() {
return new Test();
}
public static class Test {
private Map<String, Object> info = new HashMap<String, Object>();
public Map<String, Object> getInfo() {
return this.info;
}
}
}
使用问题中的yaml运行此操作会生成:
{build={artifact=${project.artifactId}, version=${project.version}, name=${project.name}, description=${project.description}}}
有各种选项用于设置前缀、控制如何处理丢失的属性等。更多信息请参阅javadoc。
问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java
我引用了Spring boot-inject map from application.yml来从application.yml文件中注入map 下面是我的application.yml代码段 属性文件如下所示 但是,我发现只有当setter和getter的格式正确时才会发生值注入,即getPairMap和setPairMap。在使用getPairs或setpairs时不是这种行为的原因是什么
到底是怎么回事? 提前谢了。
Spring Boot-从application.yml注入映射 在这个问题上,他们 为了将其映射到java代码中,他们建议使用注释。这个注释的问题是,您必须创建一个,然后在上面添加这个注释。 这样说我需要它: 上面的代码应该给出一个映射,其中key是,value是等字段的对象(当然,如果这样做有效,我将为此创建一个POJO,而不是将其作为普通对象)。 注意:对字段不起作用,这就是为什么我想看看是
我有一个配置YAML(application.yml)文件,其中包含位置数据: 我想加载它,以便它在html选择字段中可用。 我创建了以下类: 然后我通过@Autowire将CountryOptions注入Controller。但是控制器中的国家列表为空。 应用程序的配置由包含以下注释的类提供: 控制器代码 那么-有什么想法为什么国家列表不是从yaml文件创建的吗?
在我们项目的一个公共库中,我需要根据使用它的服务来区分一个接口的两个实现。 我通过构造函数注入来注入这个接口,并且需要找出如何根据我们的application.yml中的属性值来确定使用什么实现。 我查看了@Qualifier注释,但它似乎确实需要xml模式中的一个属性。我们没有这样的东西。 在我们代码的一部分中,我们以这种方式读出KafkaListener的属性 我可以在Spring中使用相同的