前言:Spring-boot的yml配置文件,这里就不在借助人、狗介绍了,试试套下微信!

创建yml文件

  • 值得注意的是下图中有三种命名方法,前两种是对的,且第二种必须是横线而不是下划线!

  1. yml文件的基本语法:由键值对和空格组成

    • 值得注意的是:作为yml的固定格式,如wxmessage、contacts这样的键后面,都需要加一个空格

    weixin:
    wxmessage: message
    contacts: friends
    discover: find_list
    me: owner_message
  2. yml的Map写法:一般情况下好友列表都会有ID,对应的昵称,头像地址,我们这里拿不到id,

    则可以将好友列表当做Map

    • 这里需要注意的是再使用IDEA 编辑配置文件的时候,如果发现配置文件的编辑项显示异常,

      比如:contacts :{image_qiankui: "百人钱坤",
      image_qianmo: "百人阡陌"*},

      那么很有可能是配置文件的类型和实际映射的实体类型不一致,即:在java文件里定义了

      一个属性:private Contacts contacts,实体却定义成Map类型,就会出错或者值为null

    weixin:
    contacts :{image_qiankui: "百人钱坤",image_qianmo: "百人阡陌",}
  3. yml的 数组写法:微信的发现表面看很明显是一个List

      #  第一种数组写法
    find-list: [moments,Scan QR Code,Shake]
    # 第二种数组写法
    find-list:
    - moments
    - Scan QR Code
    - Shake
  4. yml的对象写法:“我”模块中包含着用户的昵称、头像、支付、相册等,可以当做一个对象来处理。

    me:
    wxNickName: .
    wxId: miao90***
    wxPay: payAdress
  5. 配置文件相关的两个注解

    //将对象注入到容器内

    @Component

    //标注在类名上表示该类对应配置文件的“weixin”

    @ConfigurationProperties(prefix = "weixin")

总结: 以上四种yml的常用写法,除第一种很少能用上之外,其他的三种看似简单,但经常会因为空格层级关系不明确、实体类型映射不匹配等问题导致项目运行不成功!

附:测试相关代码

package com.wujianqinjian.springboot_note.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import java.util.List;
import java.util.Map; @Component
@ConfigurationProperties(prefix = "weixin")
public class Weixin {
private List<String> message;
private Map<String,String> contacts;
private List<String> findList;
private Me me; @Override
public String toString() {
return "Weixin{" +
"message=" + message +
", contacts=" + contacts +
", findList=" + findList +
", me=" + me +
'}';
} public List<String> getMessage() {
return message;
}
public void setMessage(List<String> message) {
this.message = message;
} public Map<String, String> getContacts() {
return contacts;
} public void setContacts(Map<String, String> contacts) {
this.contacts = contacts;
} public List<String> getFindList() {
return findList;
} public void setFindList(List<String> findList) {
this.findList = findList;
} public Me getMe() {
return me;
} public void setMe(Me me) {
this.me = me;
}
}
package com.wujianqinjian.springboot_note.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; @Component
@ConfigurationProperties(prefix = "contacts")
public class Contacts {
private String imageUrl;
private String nickName; @Override
public String toString() {
return "Contacts{" +
"imageUrl='" + imageUrl + '\'' +
", nickName='" + nickName + '\'' +
'}';
} public String getNickName() {
return nickName;
} public void setNickName(String nickName) {
this.nickName = nickName;
} public String getImageUrl() {
return imageUrl;
} public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
}
package com.wujianqinjian.springboot_note.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; @Component
@ConfigurationProperties(prefix = "me")
public class Me {
private String wxNickName;
private String wxId;
private String wxPay;
private String wxCollect;
private String wxPhoto;
private String wxCards;
private String wxExpression; @Override
public String toString() {
return "Me{" +
"wxNickName='" + wxNickName + '\'' +
", wxId='" + wxId + '\'' +
", wxPay='" + wxPay + '\'' +
", wxCollect='" + wxCollect + '\'' +
", wxPhoto='" + wxPhoto + '\'' +
", wxCards='" + wxCards + '\'' +
", wxExpression='" + wxExpression + '\'' +
'}';
} public String getWxNickName() {
return wxNickName;
} public void setWxNickName(String wxNickName) {
this.wxNickName = wxNickName;
} public String getWxId() {
return wxId;
} public void setWxId(String wxId) {
this.wxId = wxId;
} public String getWxPay() {
return wxPay;
} public void setWxPay(String wxPay) {
this.wxPay = wxPay;
} public String getWxCollect() {
return wxCollect;
} public void setWxCollect(String wxCollect) {
this.wxCollect = wxCollect;
} public String getWxPhoto() {
return wxPhoto;
} public void setWxPhoto(String wxPhoto) {
this.wxPhoto = wxPhoto;
} public String getWxCards() {
return wxCards;
} public void setWxCards(String wxCards) {
this.wxCards = wxCards;
} public String getWxExpression() {
return wxExpression;
} public void setWxExpression(String wxExpression) {
this.wxExpression = wxExpression;
}
}

最新文章

  1. SharePoint项目实践中如何实现非打破继承看上去很美的权限控制
  2. C语言中关于对目录的操作
  3. 编译器工具 Flex Bison for Windows 简单入门例子
  4. linux安装nginx
  5. TreeView 自定义显示checkbox
  6. div内容上下居中
  7. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
  8. jquery介绍
  9. vm.dirty_ratio &amp; vm.dirty_background_ratio
  10. 蓝牙 MultipeerConnectivity
  11. Ext.Net学习笔记02:Ext.Net用法概览
  12. 关于memory 和 cache
  13. 如何做Gibbs采样(how to do gibbs-sampling)
  14. 取得网站的IP 地址
  15. 自学Xpath的几个例子
  16. Java 将字节数组转化为16进制的多种方案
  17. 深入研究Java类载入机制
  18. 【Java】设计模型-五种单例模型
  19. 定时任务 Wpf.Quartz.Demo.5 (升级版)
  20. Linux CentOS更改文件的权限

热门文章

  1. axios请求拦截器
  2. LeetCode43,一题让你学会高精度算法
  3. java-FileUtils(复制文件夹、复制文件、字符串直接写入文件中)(新手)
  4. MySQL:GROUP_CONCAT函数的使用
  5. Java单例设计模式的实现
  6. CVE-2018-1000861复现
  7. javascript异步上传图片文件
  8. jq 导航跟随 模拟京东手机端
  9. 磐创AI GPU租用平台上线,1小时不到1块钱
  10. 深度强化学习(DRL)专栏开篇