Springboot如何配置yml文件与映射到java类

 更新时间:2023年09月18日 14:34:39   作者:Students Mr sun  
这篇文章主要介绍了Springboot如何配置yml文件与映射到java类问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Springboot配置yml文件与映射到java类

YAML语法

1、基本语法 k:(空格)v:表示一对键值对(空格必须有)

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

属性和值也是大小写敏感;

2、值的写法 字面量:普通的值(数字,字符串,布尔)

  • k: v:字面直接来写; 字符串默认不用加上单引号或者双引号;
  • "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: "zhangsan \n lisi":输出;zhangsan 换行 lisi '':

  • 单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
  • name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

对象、Map(属性和值)(键值对):

  • k: v:在下一行来写对象的属性和值的关系;
  • 注意缩进 对象还是k: v的方式

我们可以导入配置文件处理器,以后编写配置就有提示了

<!--配置  yml文件处理器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

完整代码

Dog类

public class Dog {
    String name;
    int age;
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

person 类

Person 类
//将配置文件中的值映射到person中
//@ConfigurationProperties 告诉springboot将本类中的所有属性与配置文件中相关的属性配置
//这个组件是容器中的组件,才能提供功能加@Component注解
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    String name;
    int age;
    Date birth;
    Map<String,Object> map;
    Dog dog;
    List list;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", birth=" + birth +
                ", map=" + map +
                ", dog=" + dog +
                ", list=" + list +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Date getBirth() {
        return birth;
    }
    public void setBirth(Date birth) {
        this.birth = birth;
    }
    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
    public Dog getDog() {
        return dog;
    }
    public void setDog(Dog dog) {
        this.dog = dog;
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}
 

yml文件中的配置:

person:
    name: sunchao
    age: 12
    birth: 2022/12/12
    map: {k1: v1,k2: v2}
    list: [lisi,zhangsan]
    dog:
        name: xiaogou
        age: 2

测试类:

package com.sunchao.demo;
import com.sunchao.demo.bean.Person;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {
    @Autowired
    Person person;
    @Test
    void contextLoads() {
        System.out.println(person);
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 约定优于配置_动力节点Java学院整理

    约定优于配置_动力节点Java学院整理

    以前做项目,总是写Ant配置文件,满足于自己更灵活的配置,而没有去思考,这么做到底值不值得
    2017-08-08
  • RabbitMQ集群运维实践教程

    RabbitMQ集群运维实践教程

    RabbitMQ的集群模式主要有两种普通集群模式和镜像队列模式,下面给大家分享RabbitMQ集群运维实践教程,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • 基于Java字符串 "==" 与 "equals" 的深入理解

    基于Java字符串 "==" 与 "equals" 的深入理解

    本篇文章是对Java中的字符串"=="与"equals"进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 详解springboot + profile(不同环境读取不同配置)

    详解springboot + profile(不同环境读取不同配置)

    本篇文章主要介绍了springboot + profile(不同环境读取不同配置),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • java 实现发短信功能---腾讯云短信

    java 实现发短信功能---腾讯云短信

    如今发短信功能已经成为互联网公司的标配,接下来通过本文给大家介绍java 实现发短信功能---腾讯云短信 ,需要的朋友可以参考下
    2019-08-08
  • springboot starter介绍与自定义starter示例详解

    springboot starter介绍与自定义starter示例详解

    Spring Boot 的 Starter 是一组比较方便的依赖描述符,可以通过 Maven 将其打成jar包,并在你的项目中直接引用,这篇文章主要介绍了springboot starter介绍与自定义starter示例,需要的朋友可以参考下
    2025-05-05
  • Java位集合之BitMap实现和应用详解

    Java位集合之BitMap实现和应用详解

    这篇文章主要介绍了Java位集合之BitMap实现和应用的相关资料,BitMap是一种高效的数据结构,适用于快速排序、去重和查找等操作,通过简单的数组和位运算,可以在Java中实现BitMap,从而节省存储空间并提高性能,需要的朋友可以参考下
    2024-12-12
  • 解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法

    解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法

    这篇文章主要介绍了解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot详细讲解断言机制原理

    SpringBoot详细讲解断言机制原理

    断言Assertion是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是org.junit.jupiter.api.Assertions的静态方法。检查业务逻辑返回的数据是否合理。所有的测试运行结束以后,会有一个详细的测试报告
    2022-06-06
  • Java中的ScheduledThreadPoolExecutor定时任务详解

    Java中的ScheduledThreadPoolExecutor定时任务详解

    这篇文章主要介绍了Java中的ScheduledThreadPoolExecutor详解,  ScheduledThreadPoolExecutor 继承自 ThreadPoolExecutor,它主要用来在给定的延迟之后运行任务,或者定期执行任务,ScheduledThreadPoolExecutor 的功能与 Timer 类似<BR>,需要的朋友可以参考下
    2023-12-12

最新评论