springboot读取自定义配置文件节点
2018-06-18 00:46:48来源:未知 阅读 ()
今天和大家分享的是自定义配置信息的读取;近期有写博客这样的计划,分别交叉来写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 @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 }
不出意外能得到如下结果:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash