java - 将值放入 application.yaml 并使用 Runtime
问题描述
我有 Spring Boot 应用程序。我想将一些值作为读取超时、调试模式放在 yaml 文件中,然后从 java 代码中读取它们。
应用程序.yaml:
spring:
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: update
show-sql: false
datasource:
url: jdbc:postgresql://localhost:5432/database_name
username: database_username
password: database_password
http:
multipart:
maxFileSize: 15Mb
maxRequestSize: 15Mb
server:
port: 8585
contextPath: /
解决方案
您可以使用@Value
spring 框架提供的注释来执行此操作。
这是示例:
api:
values:
socket-timout: 20
在您的 java 代码中,您可以获得socket-timout
使用以下代码的价值。
@Value("${api.values.socket-timeout}")
private Integer socketTimeout;
它将自动填充 value 20
。您不能对静态变量执行此操作。要为静态变量实现这一点,您可以使用以下代码。
public static Integer mySocketTimeout;
@Value("${api.values.socket-timeout}")
public void setSocketTimeout(Integer socketTime){
mySocketTimeout = socketTime;
}
通过非静态 setter 方法设置静态变量的值。
推荐阅读
- python - Django 视图,在 1 个视图中有 2 个重定向
- node.js - MongoDb mongoose 弃用警告 {useUnifiedTopology: true} 但它已设置为 true
- python - Python 中的 Azure 持久函数:为什么没有触发函数 2?
- javascript - 滚动视图中的映射使 React Native 中的水平列表垂直
- google-play - 谷歌播放卡在“内部测试”
- javascript - 在元素的多个实例上触发相同的滚动事件 - vanilla javascript
- algorithm - 是否有标准算法来找到轮询新数据的理想时间?
- linux - 写入 Linux 管道的速度比文件快,但在内核级别,为什么?
- php - 为什么 mysqli_query() 总是返回 False?
- python - 从第一个元素中获取某个字符串 - 数组