Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @注入应用程序属性的值_Java_Spring_Heroku_Spring Boot - Fatal编程技术网

Java @注入应用程序属性的值

Java @注入应用程序属性的值,java,spring,heroku,spring-boot,Java,Spring,Heroku,Spring Boot,我在我的应用程序中有以下内容 spring.datasource.username=${USERNAME} spring.datasource.password=${PASSWORD} spring.datasource.url=${DB_URL} ... twitter.consumer.key=${CONSUMER_KEY} twitter.consumer.secret=${CONSUMER_SECRET} twitter.access.key=${ACCESS_KEY} twitter.

我在我的
应用程序中有以下内容

spring.datasource.username=${USERNAME}
spring.datasource.password=${PASSWORD}
spring.datasource.url=${DB_URL}
...
twitter.consumer.key=${CONSUMER_KEY}
twitter.consumer.secret=${CONSUMER_SECRET}
twitter.access.key=${ACCESS_KEY}
twitter.access.secret=${ACCESS_SECRET}
当应用程序向上推送到heroku实例时,前三个属性由环境设置。然后使用环境设置的值连接到特定于该环境的数据库。这一切都很好

问题在于最后四个。由于这些都是敏感信息,我需要它们也被环境注入。然后,我使用自动布线将它们添加到spring引导组件中

@Value("${twitter.consumer.key}")
private String consumerKey;
@Value("${twitter.consumer.secret}")
private String consumerSecret;
@Value("${twitter.access.key}")
private String accessKey;
@Value("${twitter.access.secret}")
private String accessSecret;
现在,当我构建应用程序时,它抱怨无法解析
ACCESS\u键
等,因为我的本地计算机上没有这些环境变量

Could not resolve placeholder 'CONSUMER_KEY' in string value "${CONSUMER_KEY}"

如何在不显式设置这些值的情况下构建应用程序?例如,如果无法解析应用程序属性,是否有一些方法可以设置它们的默认值?

为了防止生成失败,如果无法解析密钥,您可以为应用程序属性指定默认值。比如,

twitter.consumer.key=${CONSUMER_KEY:fallback}
twitter.consumer.secret=${CONSUMER_SECRET:fallback}
twitter.access.key=${ACCESS_KEY:fallback}
twitter.access.secret=${ACCESS_SECRET:fallback}

为了防止生成失败,如果无法解析密钥,可以为应用程序属性指定默认值。比如,

twitter.consumer.key=${CONSUMER_KEY:fallback}
twitter.consumer.secret=${CONSUMER_SECRET:fallback}
twitter.access.key=${ACCESS_KEY:fallback}
twitter.access.secret=${ACCESS_SECRET:fallback}

通过@Value注释,可以设置默认值:

@Value("${my.property:default}")

通过@Value注释,可以设置默认值:

@Value("${my.property:default}")