javabean复杂属性和springboot的yaml配置还能这么玩在一块?

javaBean复杂属性和Yaml配置还能这么玩

先准备一个 javaBean,后续的举例都会针对这个bean里面的属性,你要是嫌弃麻烦的话直接把我的bean复制到你的idea里面哦。

/**
 * @author suke
 */
@Data
@ConfigurationProperties("suc.www")
public class Suke {

    private String username;
    private Integer userAge;
    private byte userSexy;
    private String[] bestFriends;
    private List<String> hobbies;
    private List<Suke> sukes;
    private Map<String,String> nickName;
    private Map<String,List<Suke>> allFriends;
    private Set<String> s;
}

分步说明

下面的举例要是还不会的话

还有以下的配置前缀均为下面的前缀,后续举例不再加

#前缀
suc:
   www:
  • 基本数据类型或者包装数据类型比较简单直接写就完事了
    username: suke
    user-age: 24
    user-sexy: 1
  • 数组或者普通类型的List
# array 数组  String[] bestFriends
    #best-friends: [aa,bb,cc]  #这种也是可以的
    best-friends:
      - dd
      - ee
    # List  List<String> hobbies
    hobbies:
      - eat
      - drink
      - 写博客 :xxxxx
      - 写公众号:苏克分享
  • 稍微复杂点的List中嵌套对象
 #  list  List<Suke>
    sukes:
      - {username: 3001,user-age: 24,user-sexy: 1}
      - {username: 3002,user-age: 24,user-sexy: 0}
	  - username: 3003
        user-age: 24
        user-sexy: 1
  • 普通类型键值对的Map(括号中的KV键值对无需分割空格
 # map  Map<String,String>
    nick-name: {aa:suke01,bb:suke02}
  • 复杂键值对的Map,比如值为List,且List中是对象(括号中的对象属性和值之间必须要有空格分割)
 # map  Map<String,List<Suke>>
    all-friends:
      first: # 表示第一个K,下面的表示List<Suke> 对象集合
        - {username: 1001,user-age: 24,user-sexy: 1}
        - username: 1003
          user-age: 24
          user-sexy: 1
      second: # 表示第二个K和对象的V值
        - {username: 2001,user-age: 24,user-sexy: 1}
  • set集合
 # set  Set<String> 
    s:
      - aa
      - bb
      - cc

小总结

  • 普通map属性映射时键值对写的时候中间无需空格分割,但是对象键值对映射时必须加空格
  • array数组或List集合或者set集合属性映射时有各种形式 逗号分割加括号(aa,bb,cc)、数组形式 ([aa,bb,cc])、回车后横杠 (- aa 换行 - bb 换行 -cc)
  • 当然数组中有对象的时候,可以用键值对也可以用横杠表示
sukes:
      - {username: 3001,user-age: 24,user-sexy: 1}
      - {username: 3002,user-age: 24,user-sexy: 0}
      - username: 3003
        user-age: 24
        user-sexy: 1
  • 还有有时候自己手写的javaBean,作为配置文件属性时,没法自动提示,那就加入下面的maven依赖吧(生产环境项目打包的时候去掉就可以)
     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

来源肯定是官网了:

最后

  • 求赞求关注,有问题请留言
  • 首发公众号:苏克分享

哦对了,上述javaBean的全部配置均在下面

suc:
  www:
    username: suke
    user-age: 24
    user-sexy: 1
    # array  String[] bestFriends
    #best-friends: [aa,bb,cc]  #这种也是可以的
    best-friends:
      - dd
      - ee
    # list  List<String> hobbies
    hobbies:
      - eat
      - drink
      - 写博客 :xxxxx
      - 写公众号:苏克分享
    #  list  List<Suke>
    sukes:
      - {username: 3001,user-age: 24,user-sexy: 1}
      - {username: 3002,user-age: 24,user-sexy: 0}
      - username: 3003
        user-age: 24
        user-sexy: 1
    # map  Map<String,String>
    nick-name: {aa:suke01,bb:suke02}
    # map  Map<String,List<Suke>>
    all-friends:
      first:
        - {username: 1001,user-age: 24,user-sexy: 1}
        - username: 1003
          user-age: 24
          user-sexy: 1
      second:
        - {username: 2001,user-age: 24,user-sexy: 1}

    # set  Set<String>
    s: [aa,bb,cc]
#      - aa
#      - bb
#      - cc