将值放入application.yaml并使用运行时

时间:2018-08-29 11:36:10

标签: java spring spring-mvc spring-boot yaml

我有Spring引导应用程序。 我想将一些值作为读取超时,调试模式放在yaml文件中,然后从Java代码读取它们。

application.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: /

1 个答案:

答案 0 :(得分:2)

您可以使用spring框架提供的@Value注释进行此操作。

这里是示例:

api:
   values:
      socket-timout: 20

在您的Java代码中,您可以使用以下代码获取socket-timout的值。

@Value("${api.values.socket-timeout}")
private Integer socketTimeout;

它将自动填充值20。您不能对静态变量执行此操作。要针对静态变量实现此目的,可以使用以下代码。

public static Integer mySocketTimeout;

@Value("${api.values.socket-timeout}")
public void setSocketTimeout(Integer socketTime){
   mySocketTimeout = socketTime;
}

通过非静态设置器方法设置静态变量的值。