Spring Boot中配置文件读取的四种方法,推荐收藏学习!

2026-04-29 21:402阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1314个文字,预计阅读时间需要6分钟。

Spring Boot中配置文件读取的四种方法,推荐收藏学习!

在Spring Boot项目中,基本都会涉及到读取配置文件的内容。本文将简要介绍几种常见的读取配置文件的方式:

1. 使用@Value注解: 在Java代码中,通过@Value注解可以直接读取application.properties或application.yml文件中的配置项。 java @Value(${name}) private String name;

Spring Boot中配置文件读取的四种方法,推荐收藏学习!

2. 在application.properties文件中配置: 在项目的resources目录下创建application.properties文件,并添加配置项。 properties name=tian

3. 在application.yml文件中配置: 同样在项目的resources目录下创建application.yml文件,并添加配置项。 yaml name: tian

在Spring Boot项目中基本上都会涉及到读取配置文件内容,本文就来聊聊常见的读取配置文件的几种方式。

Value注解

application.properties配置文件配置项:

name=tian

在java代码中读取:

/** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:00 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @RestController @RequestMapping("/configuration") public class ConfigurationController { @Value("${name}") private String name; @GetMapping("/index") public String test() { return name; } }

验证:

GET

localhost:8089/configuration/index

返回参数:

tian

这类通常都是没有前缀,比较单一的配置项会采用这么读取。

如果有同一的前缀配置,那么我们可以使用下面这种方法。

ConfigurationProperties注解

application.properties配置文件配置项:

user.userName=tian1 user.age=21

在javadiam中读取:

import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:07 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @Component @ConfigurationProperties(prefix = "user") public class PreConfiguration { private String userName; private Integer age; //set get 省略 }

验证:

GET

localhost:8089/preconfiguration/index

我们通常是把一类的配置项设置为前缀,统一处理,面向对象化。

但,如果是读取多个的如何处理(数组类型)?

我们可以采用下面这种方式。

也是ConfigurationProperties注解

application.properties配置文件配置项:

vip.userList[0].name=tian01 vip.userList[0].age=20 vip.userList[1].name=tian02 vip.userList[1].age=21

定义一个User类:

public class User { private String name; private Integer age; //set get toString 省略 }

配置读取类:

import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; /** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:24 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @Component @ConfigurationProperties(prefix = "vip") public class UserListConfiguration { private List<User> userList; // set get 省略 }

如果我们自定义一个custom.properties配置文件,那又该如何读取呢?

PropertySource注解

application.properties配置文件配置项:

realName=tian3

代码实现

@RestController @RequestMapping("/propertySource") @PropertySource("classpath:custom.properties") public class PropertySourceController { @Value("${realName}") private String realName; @GetMapping("/index") public String test() { return realName; } }

验证:

GET

localhost:8089/propertySource/index

返回参数:tian3

那么,问题又来了,我们可能会因为一个配置项需要改,或者是上线后发现配置项不对,这时候就需要重启服务了,为了避免这样重启服务,我们可以引入分布式配置中心

分布式配置中心有很多实现方案,比如Nacos、Zookeeper、Qconf、disconf、Apache Commons Configuration、Spring Cloud Config等。

本文共计1314个文字,预计阅读时间需要6分钟。

Spring Boot中配置文件读取的四种方法,推荐收藏学习!

在Spring Boot项目中,基本都会涉及到读取配置文件的内容。本文将简要介绍几种常见的读取配置文件的方式:

1. 使用@Value注解: 在Java代码中,通过@Value注解可以直接读取application.properties或application.yml文件中的配置项。 java @Value(${name}) private String name;

Spring Boot中配置文件读取的四种方法,推荐收藏学习!

2. 在application.properties文件中配置: 在项目的resources目录下创建application.properties文件,并添加配置项。 properties name=tian

3. 在application.yml文件中配置: 同样在项目的resources目录下创建application.yml文件,并添加配置项。 yaml name: tian

在Spring Boot项目中基本上都会涉及到读取配置文件内容,本文就来聊聊常见的读取配置文件的几种方式。

Value注解

application.properties配置文件配置项:

name=tian

在java代码中读取:

/** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:00 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @RestController @RequestMapping("/configuration") public class ConfigurationController { @Value("${name}") private String name; @GetMapping("/index") public String test() { return name; } }

验证:

GET

localhost:8089/configuration/index

返回参数:

tian

这类通常都是没有前缀,比较单一的配置项会采用这么读取。

如果有同一的前缀配置,那么我们可以使用下面这种方法。

ConfigurationProperties注解

application.properties配置文件配置项:

user.userName=tian1 user.age=21

在javadiam中读取:

import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:07 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @Component @ConfigurationProperties(prefix = "user") public class PreConfiguration { private String userName; private Integer age; //set get 省略 }

验证:

GET

localhost:8089/preconfiguration/index

我们通常是把一类的配置项设置为前缀,统一处理,面向对象化。

但,如果是读取多个的如何处理(数组类型)?

我们可以采用下面这种方式。

也是ConfigurationProperties注解

application.properties配置文件配置项:

vip.userList[0].name=tian01 vip.userList[0].age=20 vip.userList[1].name=tian02 vip.userList[1].age=21

定义一个User类:

public class User { private String name; private Integer age; //set get toString 省略 }

配置读取类:

import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; /** * @author tianwc 公众号:java后端技术全栈、面试专栏 * @version 1.0.0 * @date 2023年07月02日 21:24 * 博客地址:<a href="woaijava.cc/">博客地址</a> */ @Component @ConfigurationProperties(prefix = "vip") public class UserListConfiguration { private List<User> userList; // set get 省略 }

如果我们自定义一个custom.properties配置文件,那又该如何读取呢?

PropertySource注解

application.properties配置文件配置项:

realName=tian3

代码实现

@RestController @RequestMapping("/propertySource") @PropertySource("classpath:custom.properties") public class PropertySourceController { @Value("${realName}") private String realName; @GetMapping("/index") public String test() { return realName; } }

验证:

GET

localhost:8089/propertySource/index

返回参数:tian3

那么,问题又来了,我们可能会因为一个配置项需要改,或者是上线后发现配置项不对,这时候就需要重启服务了,为了避免这样重启服务,我们可以引入分布式配置中心

分布式配置中心有很多实现方案,比如Nacos、Zookeeper、Qconf、disconf、Apache Commons Configuration、Spring Cloud Config等。