application.properties弹簧启动值注入

时间:2018-10-12 20:27:30

标签: spring spring-boot application.properties

我正在使用Spring Boot开发REST API。我想在项目中使用git。在文件application.properties中,我具有不想在git上推送的数据库Url,用户名和密码。我不知道如何创建一个包含数据库配置的文件,以及如何将这些配置注入application.properties。

application.properties

## Server Properties
server.port= 5000

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url= jdbc:mysql://localhost:3306/MyApp?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.datasource.username= user
spring.datasource.password= pass

2 个答案:

答案 0 :(得分:2)

Spring不仅从application.properties中获取配置属性,而且还从命令行参数,JAVA System属性或环境变量中获取配置属性。

在此处查看完整列表:Spring Externalized Configuration

因此,作为参考,您可以使用一些默认值(例如在您的示例中)将application.properties文件中的属性保留下来,以便让其他用户知道可以为您的应用程序设置什么样的属性。

但是,除了在此处设置实际值外,您还可以将变量作为参数传递给应用程序,例如

-Dspring.datasource.username=user -Dspring.datasource.password= pass

或者您可以将它们设置为环境变量。

您甚至可以使用不同的设置创建多个配置。如果Spring在当前配置中找不到变量,那么它将从application.properties(或其他来源-参见上文)中选择它

答案 1 :(得分:0)

首先,您应该将application.properties添加到.ignore文件中

application.properties 

如果您仅连接到数据库,则无需手动注入值,只需将其写入application.properties
但是,如果您想将值放入属性文件中并在“应用程序”中使用

package com.microservice.test.limitservice;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("limit-service")
public class Configuration {
private int minimum;
private int maximum;

public int getMinimum() {
    return minimum;
}
public void setMinimum(int minimum) {
    this.minimum = minimum;
}
public int getMaximum() {
    return maximum;
}
public void setMaximum(int maximum) {
    this.maximum = maximum;
}

}

以及如何简单注入

@Autowired
private Configuration configuration;

application.properties文件可能是这样

limit-service.minimum=56333445
limit-service.maximum=6500

您应该注意到,它以限制服务为例开始 和@ConfigurationProperties("**limit-service**")

如果您要将配置存储在application.properties中,请确保安全 您可以看到此链接Spring Boot how to hide passwords in properties file