springboot中.yml文件参数的读取方式

yizhihongxing

下面是关于springboot中.yml文件参数的读取方式的完整攻略。

1.参数的读取方式

在springboot中,我们可以使用yml文件作为配置文件,然后通过SpringBoot提供的@ConfigurationProperties注解将其中的配置值读取到Java对象中。yml文件中支持的数据类型包括字符串、数字、布尔等基本类型,以及对象类型等。

在yml文件中,我们可以使用冒号来分隔键值对,使用缩进来表示层次结构。下面是一个简单的例子。

server:
  port: 8080
  path: /api
  session:
    timeout: 10m

在上面的例子中,我们定义了一个server对象,它包括端口号、路径和会话超时时间等属性。

要读取yml文件中的参数值,我们可以定义一个Java对象,使用@ConfigurationProperties注解来声明它,然后将该对象注入到Spring容器中即可。下面是示例代码。

@Configuration
@ConfigurationProperties(prefix = "server")
public class ServerConfig {
    private int port;
    private String path;
    private Duration sessionTimeout;

    // 省略getter和setter方法
}

在上面的代码中,我们定义了一个ServerConfig对象,并使用@ConfigurationProperties注解将它与yml文件中的server对象关联起来。prefix参数用来指定yml文件中的键值对前缀,这里指定为server,即读取以server开头的键值对。

注意,在这里我们使用了Duration类型来表示时间间隔。它支持各种时间单位,比如秒、分钟、小时等,以及数字和字母等方式表示时间。例如,10m就表示10分钟。

2. 示例说明

下面我们就通过两个示例来详细说明yml文件参数的读取方式。

示例1

首先,我们有一个yml文件,内容如下。

myapp:
  name: "myapp"
  version: "1.0"
  description: "This is a demo application."

我们的目标是将其中的配置值读取到一个Java对象中,代码如下。

@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {
    private String name;
    private String version;
    private String description;

    // 省略getter和setter方法
}

在上面的代码中,我们使用@ConfigurationProperties注解将MyAppConfig类与yml文件中的myapp对象关联起来,prefix参数指定为myapp。

在Spring容器中注入该对象,代码如下。

@Configuration
public class AppConfig {
    @Bean
    @ConfigurationProperties(prefix = "myapp")
    public MyAppConfig myAppConfig() {
        return new MyAppConfig();
    }
}

在上面的代码中,我们使用@Bean注解将MyAppConfig对象注入到Spring容器中,并使用@ConfigurationProperties注解将它与yml文件中的myapp对象关联起来,prefix参数也是指定为myapp。这样,在MyAppConfig中的属性就可以自动地从yml文件中读取相应的配置值了。

示例2

现在,我们有一个更加复杂的yml文件,内容如下。

myapp:
  name: "myapp"
  version: "1.0"
  description: "This is a demo application."
  database:
    host: "localhost"
    port: 3306
    username: "root"
    password: "root"

logging:
  level:
    root: "INFO"
    org:
      springframework: "DEBUG"
      hibernate: "WARN"

我们的目标是将其中的配置值读取到多个Java对象中,并支持级联属性的读取。

首先,我们定义一个MyAppConfig对象,用来读取myapp对象中的配置值,代码如下。

@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {
    private String name;
    private String version;
    private String description;
    private DatabaseConfig database;

    // 省略getter和setter方法
}

在上面的代码中,我们新增了一个DatabaseConfig类型的属性,用来读取myapp对象下的database对象的配置值。

接下来,我们定义一个DatabaseConfig对象,用来读取database对象中的配置值,代码如下。

public class DatabaseConfig {
    private String host;
    private int port;
    private String username;
    private String password;

    // 省略getter和setter方法
}

在上面的代码中,我们定义了一个DatabaseConfig对象,并提供了相应的属性方法。这里的属性名称需要与yml文件中的键值对名称一一对应。

最后,我们定义一个LoggingConfig对象,用来读取logging对象中的配置值,代码如下。

@ConfigurationProperties(prefix = "logging")
public class LoggingConfig {
    private LevelConfig level;

    // 省略getter和setter方法
}

在上面的代码中,我们新增了一个LevelConfig类型的属性,用来读取logging对象下的level对象的配置值。

最后,我们在Spring容器中注入这三个对象,代码如下。

@Configuration
public class AppConfig {
    @Bean
    @ConfigurationProperties(prefix = "myapp")
    public MyAppConfig myAppConfig() {
        return new MyAppConfig();
    }

    @Bean
    public DatabaseConfig databaseConfig() {
        return myAppConfig().getDatabase();
    }

    @Bean
    @ConfigurationProperties(prefix = "logging")
    public LoggingConfig loggingConfig() {
        return new LoggingConfig();
    }
}

在上面的代码中,我们分别使用@Bean注解注入MyAppConfig、DatabaseConfig和LoggingConfig三个对象。注意,在DatabaseConfig中,我们通过myAppConfig().getDatabase()方法获取了MyAppConfig对象中的database属性,实现了级联属性的读取。

综上所述,通过以上两个示例,我们详细讲解了在springboot中.yml文件参数的读取方式的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot中.yml文件参数的读取方式 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Spring Cloud Config 使用本地配置文件方式

    下面是关于Spring Cloud Config使用本地配置文件的攻略: 什么是Spring Cloud Config? Spring Cloud Config 是一个分布式配置服务,目的是为分布式系统中的基础设施和微服务应用提供一种集中化的外部配置支持。 使用本地配置文件方式 步骤一:创建本地配置文件 在本地文件系统的一个目录下创建一个配置文件,比如:ap…

    Java 2023年5月19日
    00
  • Tomcat配置及如何在Eclipse中启动

    下面我将详细讲解Tomcat配置及如何在Eclipse中启动的完整攻略。 1. Tomcat配置 Tomcat是开源的Web应用程序服务器,它可以为使用Java Servlet和JSP的Web应用程序提供运行环境。在使用Tomcat之前,需要进行配置。 1.1 下载Tomcat 首先需要在Tomcat官网下载Tomcat安装包,下载地址为http://tom…

    Java 2023年5月19日
    00
  • Spring @DateTimeFormat日期格式化时注解场景分析

    当我们在Spring中使用日期类型的时候,通常需要对日期进行格式化,否则就会出现无法解析的错误。而Spring提供的@DateTimeFormat注解可以帮我们在响应请求时对日期进行格式化,是一个非常方便的工具。 什么是@DateTimeFormat @DateTimeFormat是Spring的一个注解,用于序列化和反序列化日期类型。它可以指定日期格式,并…

    Java 2023年6月1日
    00
  • 详细分析Java内存模型

    详细分析Java内存模型的完整攻略 Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)创造的一种抽象概念,用于规范Java程序在内存中的行为。因为Java程序是运行在虚拟机中,虚拟机又是运行在操作系统中,所以Java程序在内存中的表现是比较复杂的。Java内存模型对Java程序在内存中的访问和修改行为做了明确的规范,确保…

    Java 2023年5月26日
    00
  • java Zookeeper简述

    下面是关于“Java Zookeeper简述”的完整攻略。 Zookeeper是一个分布式应用程序协调服务,用于在分布式系统中管理和协调各种服务,如Hadoop、Storm、Kafka等。其中,Zookeeper通过提供一些基本服务将这些服务组合成更高级别的服务,例如Leader Election、Configuration Management等,以简化分…

    Java 2023年5月24日
    00
  • springBoot整合CXF并实现用户名密码校验的方法

    下面是“Spring Boot整合CXF并实现用户名密码校验的方法”的完整攻略: 1. 添加依赖 在 pom.xml 文件中添加 CXF 相关的依赖: <dependencies> <!– CXF 依赖 –> <dependency> <groupId>org.apache.cxf</groupId&…

    Java 2023年5月20日
    00
  • springboot常用语法库的基本语法

    Spring Boot是一个流行的Java框架,可以帮助开发人员快速构建和部署应用程序。在开发过程中,我们经常需要使用一些常用的语法库,例如Spring Data JPA、Spring Security、Thymeleaf等。本文将详细讲解Spring Boot常用语法库的基本语法,包括如何配置、如何使用等。 1. Spring Data JPA Sprin…

    Java 2023年5月14日
    00
  • volatile关键字如何保证线程安全?

    Volatile关键字被用于修饰变量,意味着当多个线程同时访问该变量时,会保证每个线程都读取到最新的值,从而保证线程安全。下面详细讲解Volatile关键字如何实现线程安全,包含使用示例。 线程安全的问题 当多个线程同时访问同一个变量时,可能会出现线程安全的问题,例如一个线程在读取一个变量时,另一个线程正在修改这个变量,那么读取的值就可能失真。此外,在JVM…

    Java 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部