Spring Boot-从application.yml注入映射

举起:

我有一个带有以下内容Spring Boot应用程序application.yml-基本上是从这里获取的

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是否已经支持了某些东西。

安迪·威尔金森(Andy Wilkinson):

您可以使用插入地图@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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将映射从application.yml注入到Spring Boot的字段中?

根据application.yml的属性注入Spring Boot

Spring Boot 從 application.yml 注入地圖列表

将Gradle属性注入Spring Boot application.yml,在IntelliJ IDEA中不起作用

Spring Boot从application.yml注入Map时不包含特殊字符

从Spring Boot application.yml文件中注入@Scheduled fixedRate值

使用 Spring Boot 中的自定义“根键”映射来自 application.yml 的对象列表

防止 Spring Boot 从 application.yml 中的点分隔键创建嵌套映射?

如何在Spring Boot的application.yml中配置mybatis映射器xml文件

Spring Boot的application.yml和application.properties

Spring Boot不会加载application.yml配置

Gitlab秘密变量>>> Spring Boot application.yml

通过Spring Boot application.yml配置Hazelcast

Spring Boot-从依赖的jar加载application.properties/yml

Spring Boot无法解析占位符application.yml

在spring-boot中从application.yml文件获取cron

Spring Boot application.yml中的环境变量

Spring Boot:从Kubernetes ConfigMap覆盖application.yml属性

Spring Boot 2.1:未从application-test.yml加载属性

如何在Spring Boot的application.yml中配置cassandra?

Spring Boot不加载application.yml配置还是?

Spring Boot-从属性文件注入映射

Spring Boot-如何将application.yml属性定义为application.properties

Spring Boot yml配置

在Spring Boot中将属性放在application.yml或bootstrap.yml上有什么区别?

Spring Boot-忽略.jar文件中的application.yml / bootstrap.yml

如何在Spring Boot配置中将yml映射绑定到Java映射?

Spring Boot未加载在application.yml中指定的密钥库

Spring Boot application.yml双反斜杠按字面解释