为了方便自己查找资料使用和对将要使用的朋友起到便捷作用;

  · @Value标记读取(默认可直接读取application.yml的节点)

  · 实体映射application.yml的节点

  · 实体映射自定义配置文件的节点

  · 实体映射多层级节点的值

  @Value标记读取(默认可直接读取application.yml的节点)

  首先在默认application.yml配置文件中自定义如下节点信息:

  1 shenniu:

  2 name: 神牛003

  然后通过@Value标记来直接获取属性值,为了更好的展示数据到界面上定义了一个/conf/name接口:



1     @Value("${shenniu.name}")

2     private String name;

3

4     @GetMapping("/conf/defname")

5     public String getDefName() {

6         return this.name;

7     }



  运行后效果如:

  实体映射application.yml的节点

  要用实体类映射出默认配置文件值,仅仅只需要加一个属性名称前缀就行了,当然这仅仅针对于application.yml默认文件里面的属性:



1 @Configuration

2 @ConfigurationProperties(prefix = "shenniu")

3 public class ShenniuConf {

4

5     private String name;

6

7     public String getName() {

8         return name;

9     }

10

11     public void setName(String name) {

12         this.name = name;

13     }

14

15     private Url url;

16

17     public Url getUrl() {

18         return url;

19     }

20

21     public void setUrl(Url url) {

22         this.url = url;

23     }

24

25     private String des;

26

27     public String getDes() {

28         return des;

29     }

30

31     public void setDes(String des) {

32         this.des = des;

33     }

34

35     public static class Url {

36

37         private String blogurl;

38

39         public String getBlogurl() {

40             return blogurl;

41         }

42

43         public void setBlogurl(String blogurl) {

44             this.blogurl = blogurl;

45         }

46

47     }

48 }



  实体类我多增加了几个属性,为了后面测试方便;要对application.yml做配置映射只需要加上 @ConfigurationProperties(prefix = "shenniu") 标记,prefix的值对应自定义配置文件属性的前缀;这里增加/conf/name接口输出映射出对象的值:



1 @Autowired

2     private ShenniuConf shenniuConf;

3

4     @GetMapping("/conf/name")

5     public String getName() {

6         return shenniuConf.getName();

7     }




  同样得到了和@Values注解一样的效果,这就表示实体和配置文件自定义属性匹配成功了,主要实体属性名称应该和配置文件节点名称保持一致;

  实体映射自定义配置文件的节点

  读取application.yml中属性值很简单,有时候需要自定义自己的配置文件,如这里我的my.properties,文件内容如下:



1 shenniu.des=我爱祖国

2 shenniu.url.blogurl=http://www.a.com



  映射的实体还是用上面的,不过实体上需要增加注解 @PropertySource("classpath:my.properties") 表示自定义文件源,并且同样需要prefix来指定节点前缀;我们增加如下展示接口:



1 @Autowired

2     private ShenniuConf shenniuConf;

3

4     @GetMapping("/conf/des")

5     public String getDes() {

6         return shenniuConf.getDes();

7     }



  实体映射多层级节点的值

  通常自定义配置节点都有层级关系,那我们实体有怎么来获取到不同层级的属性值呢,事实上只需要在实体类里面通过类层级关系来表示就行了,如上面ShenniuConf实体里面的Url实体类属性;

  这里添加一个测试接口:



1     @Autowired

2     private ShenniuConf shenniuConf;

3

4     @GetMapping("/conf/myconf")

5     public ShenniuConf getBlogurl() {

6         return shenniuConf;

7     }