博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot读取自定义配置文件节点
阅读量:5367 次
发布时间:2019-06-15

本文共 2705 字,大约阅读时间需要 9 分钟。

  今天和大家分享的是自定义配置信息的读取;近期有写博客这样的计划,分别交叉来写springboot方面和springcloud方面的文章,因为springboot预计的篇章很多,这样cloud的文章就需要等到很后面才能写了;分享这两种文章的原因主要是为了方便自己查找资料使用和对将要使用的朋友起到便捷作用;

  • @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 @Autowired2     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 @Autowired2     private ShenniuConf shenniuConf;3 4     @GetMapping("/conf/des")5     public String getDes() {6         return shenniuConf.getDes();7     }

  

实体映射多层级节点的值

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

  

  这里添加一个测试接口:

1     @Autowired2     private ShenniuConf shenniuConf;3     4     @GetMapping("/conf/myconf")5     public ShenniuConf getBlogurl() {6         return shenniuConf;7     }

  不出意外能得到如下结果:

  

转载于:https://www.cnblogs.com/wangrudong003/p/9090161.html

你可能感兴趣的文章
获取元素属性get_attribute
查看>>
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Java有没有goto?
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
元类中__new__ 与 __init__的区别--day27
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>