前言: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;
}
}

Springboot2(二)通过微信熟悉熟悉Spring-boot yml配置文件的更多相关文章

  1. Spring Boot 的配置文件application.properties

    Spring Boot 中的application.properties 是一个全局的配置文件,放在src/main/resources 目录下或者类路径的/config下. 作为全局配置文件的app ...

  2. Spring Boot之配置文件值注入(@ConfigurationProperties)

    前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...

  3. Spring Boot属性配置文件:application.properties 详解

    学习资料 网址 官方说明文档 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-pro ...

  4. 一:Spring Boot 的配置文件 application.properties

    Spring Boot 的配置文件 application.properties 1.位置问题 2.普通的属性注入 3.类型安全的属性注入 1.位置问题 当我们创建一个 Spring Boot 工程时 ...

  5. Spring Boot 核心配置文件 bootstrap & application

    Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...

  6. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件

    精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件 内容简介:本文介绍 Spring Boot 的配置文件和配置管理,以及介绍了三种读取配置文 ...

  7. spring boot全局配置文件优先级

    前两篇介绍的application配置文件,即为spring boot全局配置文件.那么spring boot加载配置文件的时候,怎么确定加载哪个目录下哪个文件呢? spring boot默认的配置文 ...

  8. spring boot:用zxing生成二维码,支持logo(spring boot 2.3.2)

    一,zxing是什么? 1,zxing的用途 如果我们做二维码的生成和扫描,通常会用到zxing这个库, ZXing是一个开源的,用Java实现的多种格式的1D/2D条码图像处理库. zxing还可以 ...

  9. Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用

    该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...

随机推荐

  1. css 实战技巧

    css 看起来比较简单,但是要想做的好也不是那么容易,我们在平时开发中,主要用css 来美化我们的html结构,所有我觉得css 还是挺重要的,这里记录整理一些关于css 的技巧以及容易忘记的知识点. ...

  2. CentOS系统python默认版本由python2改为python3

    一.了解 CentOS中如果安装有yum,一般会有python2的某个版本.命令行键入python,出现的python2的环境: [root@instance-hrnebyqu src]# pytho ...

  3. jmeter 性能测试基本过程及示例

    jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js.html 等)以及动态资源(例如 php.jsp.ajax 等等)进行性能测试jmeter 可以挖掘出系统最大能 ...

  4. 【Python】2.17学习笔记 移位运算符,逻辑运算符

    移位运算符 左移运算符 \(<<\),将对应的二进制数末尾补一颗零,高位自然溢出(遁入虚无 print( 5 << 2 ) 把\(5\)的二进制数左移两位 即把\(101\)变 ...

  5. (转)嵌入式linux系统开发过程中遇到的——volatile

    原文地址:http://blog.csdn.net/HumorRat/article/details/5631023 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持 ...

  6. YAML中多行字符串的配置方法

    有时候我们会在配置文件中配置一段文字说明,这种时候通常会出现两种需求: 文字中可能出现段落,希望在配置中按段落方式编写,显示打印的时候也能出现段落换行. 文字很长,为方便编辑,可能在配置文件中分段写, ...

  7. nodejs中的并发编程

    从sleep的实现说起 在nodejs中,如果要实现sleep的功能主要是通过"setTimeout + promise"实现,也可以通过"循环空转"来解决.前 ...

  8. 【Weiss】【第03章】链表例程的一些修改

    主要是,感觉原来的链表例程通过Node的分配形成了链表,但是没有自动消除Node的办法比较危险,一旦在clear()之前把链表赋了其它值就内存泄漏了. 所以改了析构函数,自动清理分配出来的内存.既然改 ...

  9. Sqli-labs 搭建SQL注入平台

    sqli-labs是一款学习sql注入的开源平台,共有75种不同类型的注入. 搭建步骤: 1.在Windows系统中安装WAMP 下载地址:https://pan.baidu.com/s/1HY0hF ...

  10. shell脚本基础-起始句的含义

    大部分的shell脚本第一行,要么是 #!/bin/bash 要么是 #!/bin/sh 其实第二种是第一种的升级版,增加了协议posix(#!/bin/sh = #!/bin/bash + posi ...