首页 > 解决方案 > 将值放入 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: /

标签: javaspringspring-mvcspring-bootyaml

解决方案


您可以使用@Valuespring 框架提供的注释来执行此操作。

这是示例:

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 方法设置静态变量的值。


推荐阅读