springboot读取自定义配置文件节点的方法

 更新时间:2018年05月26日 08:47:18   作者:神牛步行3  
这篇文章主要介绍了springboot读取自定义配置文件节点的方法,本文给大家介绍的非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下

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

•@Value标记读取(默认可直接读取application.yml的节点)
•实体映射application.yml的节点
•实体映射自定义配置文件的节点
•实体映射多层级节点的值

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

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

 shenniu:
 name: 神牛003

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

@Value("${shenniu.name}")
  private String name;

  @GetMapping("/conf/defname")
  public String getDefName() {
    return this.name;
  }

  运行后效果如:

实体映射application.yml的节点

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

@Configuration
@ConfigurationProperties(prefix = "shenniu")
public class ShenniuConf {
  private String name;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  private Url url;
  public Url getUrl() {
    return url;
  }
  public void setUrl(Url url) {
    this.url = url;
  }
  private String des;
  public String getDes() {
    return des;
  }
  public void setDes(String des) {
    this.des = des;
  }
  public static class Url {
    private String blogurl;
    public String getBlogurl() {
      return blogurl;
    }
    public void setBlogurl(String blogurl) {
      this.blogurl = blogurl;
    }
  }
}

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

 @Autowired
   private ShenniuConf shenniuConf; 
   @GetMapping("/conf/name")
   public String getName() {
     return shenniuConf.getName();
   }

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

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

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

shenniu.des=我爱祖国
 shenniu.url.blogurl=http://www.a.com

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

 @Autowired
   private ShenniuConf shenniuConf; 
   @GetMapping("/conf/des")
   public String getDes() {
     return shenniuConf.getDes();
  }

实体映射多层级节点的值

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

  这里添加一个测试接口:

   @Autowired
   private ShenniuConf shenniuConf;   
   @GetMapping("/conf/myconf")
  public ShenniuConf getBlogurl() {
     return shenniuConf;
   }

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

  

git地址: https://github.com/shenniubuxing3    nuget发布包:https://www.nuget.org/profiles/shenniubuxing3

总结

以上所述是小编给大家介绍的springboot读取自定义配置文件节点的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • Java中如何保证缓存一致性问题

    Java中如何保证缓存一致性问题

    这篇文章主要介绍了Java中如何保证缓存一致性问题,文章将通过主题提出的问题展开一些解决方案分析,需要的小伙伴可以参考一下
    2022-04-04
  • SpringBoot集成Spring security JWT实现接口权限认证

    SpringBoot集成Spring security JWT实现接口权限认证

    这篇文章主要介绍了SpringBoot集成Spring security JWT实现接口权限认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Mybatis批量插入,返回主键ID不成功,巨坑记录

    Mybatis批量插入,返回主键ID不成功,巨坑记录

    这篇文章主要介绍了Mybatis批量插入,返回主键ID不成功,巨坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java如何使用字符流读写非文本文件

    Java如何使用字符流读写非文本文件

    这篇文章主要介绍了Java如何使用字符流读写非文本文件,以Java的字符流读取文件为例:它只能读取0-65535之间的字符,可以看出来字符都是正数,但是二进制的byte是可以为负数的,需要的朋友可以参考下
    2023-04-04
  • java+vue实现添加单选题、多选题到题库功能

    java+vue实现添加单选题、多选题到题库功能

    这篇文章主要为大家详细介绍了java+vue实现添加单选题、多选题到题库功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • elasticsearch+logstash并使用java代码实现日志检索

    elasticsearch+logstash并使用java代码实现日志检索

    这篇文章主要介绍了elasticsearch+logstash并使用java代码实现日志检索,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 浅拷贝和深拷贝原理分析

    浅拷贝和深拷贝原理分析

    Java 对象拷贝是为对象赋值的一种方式,简单来说就是创建一个和原对象相同的对象,新创建的对象是原对象的一个副本。面试官贼拉喜欢在面试的时候问一问你浅拷贝和深拷贝的原理
    2021-08-08
  • 浅谈Strut2如何对请求参数的封装

    浅谈Strut2如何对请求参数的封装

    这篇文章主要介绍了浅谈Strut2如何对请求参数的封装,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Java8通过CompletableFuture实现异步回调

    Java8通过CompletableFuture实现异步回调

    这篇文章主要介绍了Java8通过CompletableFuture实现异步回调,CompletableFuture是Java 8 中新增的一个类,它是对Future接口的扩展,下文关于其更多相关详细介绍需要的小伙伴可以参考一下
    2022-04-04
  • Elasticsearch索引结构与算法解析

    Elasticsearch索引结构与算法解析

    ​作为搜索引擎的一部分,ES自然具有速度快、结果准确、结果丰富等特点,那么ES是如何达到“搜索引擎”级别的查询效率呢?首先是索引,其次是压缩算法,接下来我们就一起了解下ES的索引结构和压缩算法
    2023-04-04

最新评论