美文网首页
Spring配置文件注入

Spring配置文件注入

作者: nitricoxide | 来源:发表于2021-02-01 14:41 被阅读0次

    @Value注解

    以前配置文件注入都是用String接收的,面试的时候才知道可以用集合类接收

    注入Set/List

    yaml文件:

    set:
      config: 1,2,3,4
    

    spring注入:

    @Value("#{'${set.config}'.split(',')}")
    Set<Integer> setConfig;
    
    注入Map

    yaml文件:

    map:
      config: "{aa: 'AA', bb: 'BB'}"
    

    spring注入:

    @Value("#{${map.config}}")
    Map<String, Object> mapConfig;
    

    @ConfigurationProperties

    比如说项目中有大量需要注入的配置文件,用这个注解就可以更好的分类,但格式与@Value不同

    yaml文件

    aaa:
      bbb:
        list:
          - xxx
          - yyy
          - zzz
        map:
          key1: 'value1'
          key2: 'value2'
    

    配置类

    @Component
    @ConfigurationProperties(prefix = "aaa.bbb")
    @Data
    public class PropertiesEntity {
    
        private List<String> list;
    
        private Map<String, Object> map;
    
    }
    

    此时PropertiesEntity这个类已被spring容器管理,用@Autowired注入即可

    @Autowired
    PropertiesEntity properties;
    
    测试:
    @RestController
    public class TestController {
    
        @Autowired
        PropertiesEntity properties;
    
        @Value("#{'${set.config}'.split(',')}")
        Set<Integer> setConfig;
    
        @Value("#{${map.config}}")
        Map<String, Object> mapConfig;
    
        @RequestMapping(value = "/test/properties", method = RequestMethod.POST)
        public Object propertiesTest () {
    
            System.out.println("打印ConfigurationProperties注解的类" + properties);
    
            System.out.println("打印@Value注入的set集合" + setConfig);
    
            System.out.println("打印@Value注入的map集合" + mapConfig);
    
            return "测试";
        }
    
    }
    

    结果:

    打印ConfigurationProperties注解的类PropertiesEntity(list=[xxx, yyy, zzz], map={key1=value1, key2=value2})
    打印@Value注入的set集合[1, 2, 3, 4]
    打印@Value注入的map集合{aa=AA, bb=BB}
    

    相关文章

      网友评论

          本文标题:Spring配置文件注入

          本文链接:https://www.haomeiwen.com/subject/cxdytltx.html