跳过正文

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

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 Boot应用程序配置服务器端口。可以在application.properties文件、命令行参数或系统属性中设置端口。

在Spring应用程序中返回HTTP 4XX错误

了解如何在Spring应用程序中返回HTTP 4XX错误。使用ResponseEntity来设置适当的HTTP状态码和响应体。

配置 Java Web 客户端以进行 HTTPS 请求

学习如何为HTTPS请求配置Java Web Client。通过加密保护用户数据,确保您的HTTP通信安全。