zoukankan      html  css  js  c++  java
  • Springboot读取自定义配置文件节点

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

      · @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     }
      不出意外能得到如下结果:
  • 相关阅读:
    Android Toast效果
    禁锢的思维
    偶遇makeblock
    发疯,宁愿一年少赚10万也不想和芯片打交道了
    Linux物理内存相关数据结构
    字符设备驱动框架
    Linux在IA-32体系结构下的地址映射
    使用busybox构建根文件系统
    在内容长页处动态增加滚动的返回头部图标
    用IE滤镜实现多种常用的CSS3效果
  • 原文地址:https://www.cnblogs.com/-flq/p/9110927.html
Copyright © 2011-2022 走看看