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}")