前言: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. vue2.0:项目开始,首页入门(main.js,App.vue,importfrom)

    对main.js App.vue 等进行操作: 但是这就出现了一个问题:什么是main.js,他主要干什么用的?App.vue又是干什么用的?main.js 里面的import from又在干嘛?ne ...

  2. 10.xadmin后台使用管理

    目录 xadmin后台管理 xadmin后台管理 安装:luffy虚拟环境下 >: pip install https://codeload.github.com/sshwsfc/xadmin/ ...

  3. Java设计模式学习笔记三

    工厂模式 简单工厂模式(不属于23种设计模式之一) 属于创建型模式,是工厂模式的一种.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式: 简单工厂 ...

  4. Posix线程编程指南(5)

    Posix线程编程指南(5) 杨沙洲 原文地址:http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part5/ 杂项 ...

  5. python迭代器、装饰器和生成器

    装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 3.实 ...

  6. Spring Cloud 系列之 Netflix Hystrix 服务监控

    Actuator Hystrix 除了可以实现服务容错之外,还提供了近乎实时的监控功能,将服务执行结果和运行指标,请求数量成功数量等等这些状态通过 Actuator 进行收集,然后访问 /actuat ...

  7. linux golden-dict个性化添加词典

    国内有道,百度等参考https://www.jianshu.com/p/9bf577335945如果和我一样,想要添加大名鼎鼎的韦氏词典英文词典,则地址如下https://www.merriam-we ...

  8. Hook集合----SSDTHook(x86 Win7)

    最近在学习Ring0层Hook的一些知识点,很久就写完SSDTHook的代码了,但是一直没有整理成笔记,最近有时间也就整理整理. 介绍: SSDTHook 实质是利用Ntoskrnl.exe 中全局导 ...

  9. UVA - 10200 Prime Time 关于 double类型 卡精度

    题意: 给定一个区间,a到b, n在区间内,有一个计算素数的公式,n*n+n+41,将n带进去可以得出一个数字.但是这个公式可能不准确,求出这个公式在这个区间内的准确率. 直接模拟就好了,不过要 注意 ...

  10. js 的 new 干了什么