跳过正文

在 Spring 中获取 Properties 文件中定义的值

Spring Properties Basics
作者
Harpal Singh
Software Engineer
翻译者
Namastecode
目录

1. 介绍

在本教程中,我们将学习如何在Spring Boot应用程序中访问定义在properties文件中的值。

首先,我们将定义在 Spring Boot 应用程序中如何配置属性。然后,我们将了解如何在应用程序运行时读取这些属性。

拥有一个属性文件是将配置外部化为Spring Boot应用程序的最常见方式。因此,这是一种在不更改代码的情况下自定义应用程序行为的好方法。

让我们开始吧。

2. 在Spring Boot中定义属性

首先,我们需要定义一些属性。Spring 使用一种约定,即在资源文件夹内创建一个名为 application.properties 的文件,在其中编写所有配置。如果我们使用 YAML 格式,文件则命名为 application.yml

现在,假设我们想为用户的请求定义一个速率限制。在我们的属性文件中,我们可以定义一个名为 userRequest.rate_limit 的属性:

userRequest.rate_limit=20

在这里,我们为用户请求定义了每分钟20次请求的速率限制。让我们看看如何在我们的应用程序中读取这个属性。

3. 在 Spring Service 中访问属性

现在,我们有一个可以读取的自定义属性值。为此目的,我们可以在 Spring Boot 服务中使用 @Value 注解:

@Service
public class UserRequestService {
    
    @Value("${userRequest.rate_limit}")
    private String userRequestRateLimit;
    
    // ...
}

简单来说,@Value 注解用于在 Spring 中将属性的值注入到字段中。

此外,我们还可以使用 @Value 注解在构造函数参数或方法参数上注入属性:

@Service
public class UserRequestService {
    
    private final String userRequestRateLimit;
    
    @Autowired
    public UserRequestService(@Value("${userRequest.rate_limit}") String userRequestRateLimit) {
        this.userRequestRateLimit = userRequestRateLimit;
    }
    
    // ...
}

4. 设置默认值

有时候,我们可能不想强制用户定义某个属性。在这样的情况下,我们希望该属性有一个默认值。为此,我们可以使用 ${property:defaultValue} 格式来定义默认值:

@Value("${userRequest.rate_limit:10}")
private String userRequestRateLimit;

在这种情况下,我们不需要在属性文件中设置值。如果没有定义该属性,将使用默认值10。

5. 结论

在这个简短的教程中,我们学习了如何在 Spring Boot 应用程序中访问属性文件中定义的值。首先,我们定义了一个自定义属性,然后使用 @Value 注解将属性的值注入到我们的 Spring 服务中。最后,我们了解了如何为属性设置默认值。

相关文章

配置 Spring Boot 应用程序的端口
Spring Basics
在Spring应用程序中返回HTTP 4XX错误
Spring HTTP
配置 Java Web 客户端以进行 HTTPS 请求
WebClient HTTPS Spring