美文网首页
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