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

下面是关于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日

相关文章

  • Android RxJava异步数据处理库使用详解

    Android RxJava异步数据处理库使用详解 简介 RxJava是一个异步数据处理库,它建立在观察者模式和可观察流的基础之上。这个库的主要目的是简化异步操作的处理,提高代码的可读性和可维护性。它专注于数据流的处理,而不是UI层的处理。 RxJava可以帮助开发者避免使用回调函数和线程的管理,简化代码逻辑。RxJava可以用于处理网络请求,数据库查询,事…

    Java 2023年5月26日
    00
  • java求数组元素重复次数和java字符串比较大小示例

    下面是讲解“java求数组元素重复次数和java字符串比较大小示例”的完整攻略: Java数组元素重复次数 创建一个整型数组并初始化,例如: int[] arr = {1, 2, 3, 4, 1, 5, 6, 2, 3, 7, 8, 9, 2}; 遍历一次数组,利用HashMap的key-value键值对特性,将数组元素作为key,出现次数作为value存储…

    Java 2023年5月26日
    00
  • 如何创建和使用Java类?

    创建和使用Java类可以分为以下几个步骤: 创建一个.java文件,命名为你的类名。例如,我们创建一个名为”Person”的类。 在这个文件中定义这个类的属性和方法。例如,我们为”Person”类定义一个属性”name”和一个方法”sayHello”。 public class Person { private String name; public voi…

    Java 2023年4月27日
    00
  • Java多线程atomic包介绍及使用方法

    下面是详细讲解“Java多线程atomic包介绍及使用方法”的完整攻略。 什么是Java多线程atomic包? Java多线程中的atomic包是提供原子性操作的一个工具包。所谓原子性操作,是指一个操作在执行时不会被其他线程的操作所干扰,不会出现数据不一致或者执行结果不完整的情况。atomic包中的类都是安全的,可以保证在多线程的环境下进行数据操作时不会造成…

    Java 2023年5月26日
    00
  • fastjson 使用方法详细介绍

    Fastjson 使用方法详细介绍 Fastjson 是一款 Java 的 JSON 库,可以将 Java 对象与 JSON 互相转换。下面将详细介绍 Fastjson 的使用方法。 依赖引入 在使用 Fastjson 之前,需要先引入依赖。 Maven 依赖 在 pom.xml 文件中添加以下依赖: <dependency> <group…

    Java 2023年5月26日
    00
  • intellij idea的快速配置使用详细教程

    Intellij IDEA的快速配置使用详细教程 简介 Intellij IDEA 是一个流行的 Java 集成开发环境,具有高效可扩展、强大且智能的代码编辑器和丰富的工具集。下面是 Intellij IDEA 的快速配置使用详细教程。 步骤 下载和安装在官网 https://www.jetbrains.com/idea/ 上下载适合你的操作系统版本并安装。…

    Java 2023年5月20日
    00
  • 一篇文章解决Java异常处理

    一篇文章解决Java异常处理的完整攻略 Java是一种面向对象的编程语言,设计初衷之一就是为了减轻程序员的负担,让程序员能够更好地管理代码和实现业务逻辑。然而,即便Java已经尽力省略了一些开发工作量,但仍有许多棘手的问题需要程序员自己去解决。其中一个常见的问题就是异常处理。 什么是Java异常? 异常是Java语言的对象,它表示在程序运行期间发生的不正常情…

    Java 2023年5月26日
    00
  • Spring Boot 整合JPA 数据模型关联使用操作(一对一、一对多、多对多)

    下面是“Spring Boot 整合 JPA 数据模型关联使用操作(一对一、一对多、多对多)”的完整攻略。 简介 在讲解具体的操作步骤之前,我们需要先了解一些基础知识。 JPA JPA,全称为 Java Persistence API,即 Java 持久化 API,是 Java EE 技术的一部分,是一种轻量级的 Java ORM 框架,主要是作为 Hibe…

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