您的位置:首页 > 文旅 > 美景 > 重生之 SpringBoot3 入门保姆级学习(08、properties 和 yml 表示复杂对象)

重生之 SpringBoot3 入门保姆级学习(08、properties 和 yml 表示复杂对象)

2025/2/25 22:11:04 来源:https://blog.csdn.net/weixin_56050344/article/details/139289121  浏览:    关键词:重生之 SpringBoot3 入门保姆级学习(08、properties 和 yml 表示复杂对象)

重生之 SpringBoot3 入门保姆级学习(08、properties 和 yml 表示复杂对象)

    • 2.5 yml 配置文件
    • 2.6 复杂对象用 properties 表示
    • 2.7 复杂对象用 yml 表示

2.5 yml 配置文件


  • application.properties 配置文件书写形式
server.port=9999spring.data.redis.host=localhost
spring.data.redis.port=6379
  • application.yml 配置文件书写形式
server:port: 9999spring:data:redis:host: localhostport: 6379

application.yml 的区别:

1、k: v 构成 k: 后面必须有空格,k: 是固定的

2、属性之间有层级关系,相同层级属性空格相同

2.6 复杂对象用 properties 表示


  • 在 pom.xml 中引用 lombok 刷新后 并 使用 lombok 插件生成 getter、setter、有参构造、无参构造。
    • @data 生成 getter、setter
    • @AllArgsConstructor 有参构造
    • @NoArgsConstructor 无参构造
    <dependencies><!--springboot3 Web 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--redis starter 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--lombok 依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
  • 创建 Cat 类
package com.zhong.dao;import lombok.Data;/*** @ClassName : Cat* @Description :* @Author : zhx* @Date: 2024-05-27 20:42*/
@Data
public class Cat {private String name;private Integer age;
}
  • 创建 Dog 类
package com.zhong.dao;import lombok.Data;/*** @ClassName : Dog* @Description :* @Author : zhx* @Date: 2024-05-27 20:42*/
@Data
public class Dog {private String name;private Integer age;
}
  • 创建 Child 类
package com.zhong.dao;import lombok.Data;import java.util.Date;
import java.util.List;/*** @ClassName : Child* @Description :* @Author : zhx* @Date: 2024-05-27 20:40*/
@Data
public class Child {private String name;private Integer age;private Date birthDay;private List<String> text;
}
  • 创建 Person 类
package com.zhong.dao;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.List;
import java.util.Map;/*** @ClassName : Person* @Description :* @Author : zhx* @Date: 2024-05-27 20:38*/
@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {private String name;private Integer age;private Date brithDay;private Boolean like;private Child child; // 嵌套对象private List<Dog> dogs; // 数组里面嵌套对象private Map<String, Cat> cats;  // Map 里面嵌套对象@Overridepublic String toString() {return "Person{" +"\n\tname='" + name + '\'' +", age=" + age +", brithDay=" + brithDay +", like=" + like +", \n\tchild=" + child +", \n\tdogs=" + dogs +", \n\tcats=" + cats +"\n}";}
}
  • application.properties
person.name=钟宏雄
person.age=23
person.brith-day=2024/05/27 21:06:06
person.like=true
person.child.name=小猫
person.child.age=10
person.child.brith-day=2014/05/27 21:06:06
person.child.text[0]=abc
person.child.text[1]=xyz
person.dogs[0].name=小黑
person.dogs[0].age=8
person.dogs[1].name=小白
person.dogs[1].age=6
person.cats.c1.name=小蓝
person.cats.c1.age=10
person.cats.c2.name=小灰
person.cats.c2.age=20
  • 输出程序 MainApplication
package com.zhong;import com.zhong.dao.Person;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @ClassName : MainApplication* @Description : 启动 SpringBoot 项目的入口程序* @Author : zhx* @Date: 2024-05-20 16:20*/
@SpringBootApplication  // 标识这是一个 SpringBoot 应用
public class MainApplication {public static void main(String[] args) {var ioc = SpringApplication.run(MainApplication.class, args);Person bean = ioc.getBean(Person.class);System.out.println(bean);}
}
  • 输出结果
Person{name='钟宏雄', age=23, brithDay=Mon May 27 21:06:06 CST 2024, like=true, child=Child(name=小猫, age=10, birthDay=null, text=[abc, xyz]), dogs=[Dog(name=小黑, age=8), Dog(name=小白, age=6)], cats={c1=Cat(name=小蓝, age=10), c2=Cat(name=小灰, age=20)}
}

2.7 复杂对象用 yml 表示


注释掉 application.properties 的内容

  • application.yml(对比 application.properties 的写法)
person:name: 王萍age: 21brith-day: 2024/05/27 21:06:06like: truechild:name: 小狗age: 10birthDay: 2024/05/27 21:06:06text[0]: deftext[1]: uvwdogs[0]:name: 小绿age: 10dogs[1]:name: 小黄age: 20cats.c1:name: 小橙age: 10cats.c2:name: 小青age: 20
  • 标准写法
person:name: 王萍age: 21brith-day: 2024/05/27 21:06:06like: truechild:name: 小狗age: 10birthDay: 2024/05/27 21:06:06#    text: ["def", "uvw"]text:- def- uvwdogs:- name: 小绿age: 10- name: 小黄age: 20cats:c1:name: 小橙age: 10c2: {name:小青, age: 2}   # 对象也可以使用 {key:value} 表示
  • 输出结果
Person{name='王萍', age=21, brithDay=Mon May 27 21:06:06 CST 2024, like=true, child=Child(name=小狗, age=10, birthDay=Mon May 27 21:06:06 CST 2024, text=[def, uvw]), dogs=[Dog(name=小绿, age=10), Dog(name=小黄, age=20)], cats={c1=Cat(name=小橙, age=10), c2=Cat(name=小青, age=20)}
}

语法细节

  • birthDay 推荐写为 birth-day
  • 文本:
    • 单引号不会转义( \n 则为普通字符显示)
    • 双引号会转义 ( \n 则为换行)
  • 大文本:
    • | 开头,大文本写在下层,保留文本格式,换行符正确显示
    • > 开头,大文本写在下层,折叠换行符
  • 多文档合并
    • 使用 — 可以把多个 yaml 文档合并在一个文档中,每个文档区依然认为内容独立

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com