SpringBoot实现给属性赋值的两种方式

 更新时间:2024年07月24日 09:26:03   作者:Xwzzz_  
在Spring Boot中,配置文件是用来设置应用程序的各种参数和操作模式的重要部分,Spring Boot支持两种主要类型的配置文件:properties文件和YAML 文件,这两种文件都可以用来定义相同的配置,接下来由小编给大家详细的介绍一下这两种方式

一,介绍

在Spring Boot中,配置文件是用来设置应用程序的各种参数和操作模式的重要部分。Spring Boot支持两种主要类型的配置文件:properties文件和YAML 文件。这两种文件都可以用来定义相同的配置,但它们在格式和表达能力上有所不同。

二,Properties 配置方式

properties文件是Java平台最传统的配置方式,文件扩展名为 .properties。这种格式非常简单,主要由键值对组成,每一对键值对设置一个配置属性。

示例:

定义模型Person类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix="person")
public class Person {
    private String name;
    private int age;
    private String uuid;
    private Dog dog;
 
    // standard getters and setters
 
    public static class Dog {
        private String name;
        private String breed;
 
        // standard getters and setters
    }
}

Properties 配置

person.name=John Doe
person.age=35
person.uuid=${random.uuid}
person.dog.name=Rex
person.dog.breed=Labrador

这样配置后,Spring Boot 会自动application.properties中的相关配置注入到 Person对象和其内部的 Dog对象。

使用 @Value注解也可以直接在 Spring Boot 应用中注入配置值,例

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@Component
public class Person {
    @Value("${person.name}")
    private String name;
 
    @Value("${person.age}")
    private int age;
 
    @Value("${person.uuid}")
    private String uuid;
 
    // 内部类和其他配置略
}

三,YAML 配置方式

YAML 是一种层次结构化的数据格式,相比于 properties文件,它支持列表和嵌套的对象,使得配置更加清晰和组织化。

yaml配置:

person:
  name: "John Doe"
  age: 35
  uuid: ${random.uuid}
  dog:
    name: "Rex"
    breed: "Labrador"

这时要将YAML文件中的配置自动映射到一个Java类中,需要在Spring Boot应用中定义相应的配置类,并使用@ConfigurationProperties注解。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private String uuid;
    private Dog dog;
 
 
    @Component
    public static class Dog {
        private String name;
        private String breed;
 
        // getters and setters
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
 
        public String getBreed() {
            return breed;
        }
 
        public void setBreed(String breed) {
            this.breed = breed;
        }
    }
}

四,对比

1. 可读性

  • YAML 由于其支持层级结构,通常在表达更复杂的配置时更加清晰和易读。
  • Properties 文件更适合简单的平面键值对,但在需要表达嵌套配置时可读性较差。

2. 表达能力

  • YAML 支持复杂的数据结构,如列表和字典(即嵌套的对象),这使得它在表达如安全规则、路由配置等复杂配置时非常有用。
  • Properties 文件不支持直接的层级或复杂结构,所有结构都必须通过点分隔的方式平铺开来表达。

3. 错误检测

  • YAML 文件由于格式更加复杂,对缩进非常敏感,错误的缩进可能导致整个文件无法解析。
  • Properties 文件结构简单,缩进和格式错误的容忍度较高。

4. 使用场景

  • 如果配置较为简单,或是迁移遗留项目而不希望引入新的复杂性,那么使用.properties可能更合适。
  • 对于新项目或需要表达复杂配置的情况,.yaml提供了更强的表达能力和更好的可读性。

以上就是SpringBoot实现给属性赋值的两种方式的详细内容,更多关于SpringBoot给属性赋值的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Cloud负载均衡及远程调用实现详解

    Spring Cloud负载均衡及远程调用实现详解

    这篇文章主要介绍了Spring Cloud负载均衡及远程调用实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 线程池的七大核心参数以及常用的四种线程池详解

    线程池的七大核心参数以及常用的四种线程池详解

    这篇文章主要介绍了线程池的七大核心参数以及常用的四种线程池使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Spring事务执行流程及如何创建事务

    Spring事务执行流程及如何创建事务

    这篇文章主要介绍了Spring事务执行流程及如何创建事务,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-03-03
  • MyBatis源码解析——获取SqlSessionFactory方式

    MyBatis源码解析——获取SqlSessionFactory方式

    这篇文章主要介绍了MyBatis源码解析——获取SqlSessionFactory方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java实现把文件及文件夹压缩成zip

    Java实现把文件及文件夹压缩成zip

    这篇文章主要介绍了Java实现把文件及文件夹压缩成zip,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • IDEA中try catch抛异常快捷键分享

    IDEA中try catch抛异常快捷键分享

    在编写Java代码时,使用IDEA的快捷键CTRL+ALT+t可以快速生成try..catch语句块,有效提高编码效率,首先选择需要处理的代码片段,然后按下快捷键,选择try/catch选项,即可自动包围选中代码,这一快捷操作简化了异常处理步骤,减少了手动编写的时间,是编程中的实用技巧
    2024-10-10
  • Java日常开发中读写TXT文本举例详解

    Java日常开发中读写TXT文本举例详解

    这篇文章主要给大家介绍了关于Java日常开发中读写TXT文本,包括使用BufferedReader、Scanner、FileInputStream等类进行读取,以及使用BufferedWriter、PrintWriter、FileOutputStream等类进行写入,需要的朋友可以参考下
    2024-12-12
  • 使用java NIO及高速缓冲区写入文件过程解析

    使用java NIO及高速缓冲区写入文件过程解析

    这篇文章主要介绍了使用java NIO及高速缓冲区写入文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java二分查找之循环条件与区间写法详解

    Java二分查找之循环条件与区间写法详解

    二分查找算法是一种高效的搜索算法,适用于有序数组,它通过将查找范围不断减半,逐步缩小目标值的搜索空间,最终找到目标元素或确认目标不存在,这篇文章主要介绍了Java二分查找之循环条件与区间写法的相关资料,需要的朋友可以参考下
    2026-03-03
  • Spring Boot 3.x GraalVM原生镜像构建内存溢出问题解决方案

    Spring Boot 3.x GraalVM原生镜像构建内存溢出问题解决方案

    文章解析了Spring Boot 3.x与GraalVM Native Image构建过程中出现的内存溢出问题,从问题概述、根本原因、诊断工具、解决方案到高级调优技巧和应急解决方案,全面覆盖了构建优化的各个方面,本文给大家介绍的非常详细,感兴趣的朋友一起学习下吧
    2026-01-01

最新评论