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日

相关文章

  • SpringBoot整合TKMyBatis实现单表增删改查操作

    下面将详细讲解“SpringBoot整合TKMyBatis实现单表增删改查操作”的完整攻略。 1. 导入依赖 首先,在项目的 pom.xml 文件中导入以下依赖: <!– SpringBoot Starter –> <dependency> <groupId>org.springframework.boot</g…

    Java 2023年6月15日
    00
  • Maven管理SpringBoot Profile详解

    Maven管理SpringBoot Profile详解 简介 Spring Boot是一款基于Spring框架,更快地启动、开发和部署单独的Java应用程序的工具。在使用Spring Boot的过程中,我们经常需要使用到不同的配置和环境,而这些配置和环境可以通过Profile的方式进行管理。 本文将讲解如何利用Maven对Spring Boot的Profil…

    Java 2023年5月19日
    00
  • SpringBoot2.x 整合Spring-Session实现Session共享功能

    下面我将详细讲解“SpringBoot2.x 整合Spring-Session实现Session共享功能”的完整攻略。 1. 什么是Spring Session Spring Session是Spring框架提供的一个解决方案,用于替换Java Web中使用的HttpSession。 Spring Session将HttpSession存储在集中式存储中,如…

    Java 2023年5月19日
    00
  • webuploader+springmvc实现图片上传功能

    前提条件在使用webuploader+springmvc进行图片上传之前,需要确保以下条件已准备就绪: 服务器环境: JDK:1.8及以上; Tomcat:7.0及以上; SpringFramework:4.0.9及以上; Maven或Gradle; webuploader插件。 整体思路: 利用webuploader插件进行文件上传,前端通过ajax向服务…

    Java 2023年6月15日
    00
  • Java的Spring AOP详细讲解

    关于“Java的Spring AOP详细讲解”的攻略,我可以给你讲解一下。首先,我们需要明白什么是AOP,AOP全称是Aspect Oriented Programming,即面向切面编程。它是一种编程思想,可以将程序中相同的横切面代码抽取出来,集中到一起进行管理和处理。Spring AOP是基于AOP思想的实现,可以很好的解决代码耦合问题。 在Spring…

    Java 2023年5月19日
    00
  • Java实战之课程在线学习系统的实现

    Java实战之课程在线学习系统的实现 系统需求分析与设计 在开始实现课程在线学习系统之前,我们首先需要进行系统需求分析与设计。在这个阶段中,我们需要明确系统的功能要求和设计系统所需的技术栈。 系统功能要求 在课程在线学习系统中,我们需要实现以下功能: 用户注册、登录和信息修改 用户课程的浏览、学习和评价 管理员添加、删除、修改课程信息 管理员管理用户信息和课…

    Java 2023年5月18日
    00
  • bootstrap——bootstrapTable实现隐藏列的示例

    当你需要在Bootstrap Table中隐藏列时,可以通过以下步骤实现: 第一步:下载Bootstrap Table 首先,需要从Bootstrap Table官网下载Bootstrap Table插件。 官网链接:https://bootstrap-table.com/ 第二步:编写HTML代码 在编写HTML代码之前,需要加载Bootstrap样式表和…

    Java 2023年6月15日
    00
  • ASP.NET使用ajax实现分页局部刷新页面功能

    下面是使用ASP.NET和Ajax实现分页局部刷新页面的攻略。 简介 ASP.NET和Ajax可以帮助我们实现动态的网页应用,其中的分页功能是常用的需求之一。通常,对于大的数据集,我们需要将其分页显示,而且需要在用户浏览时进行快速的局部刷新,以提高用户体验。 步骤 下面是实现分页局部刷新页面功能的步骤: 1.设计后端页面 首先需要在服务器端设计好页面,可以采…

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