我的application.properties
;
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实例时,前三个属性由环境设置。然后,使用环境设置的值与特定于该环境的数据库建立连接。这一切都很好。
问题在于最后四个问题。由于这些是敏感信息,我还需要它们由环境注入。然后我使用自动装配将这些添加到弹簧启动组件中。
@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_KEY
等因为我的本地计算机上没有这些环境变量。
Could not resolve placeholder 'CONSUMER_KEY' in string value "${CONSUMER_KEY}"
如何在不明确设置这些值的情况下构建应用程序?例如,如果无法解析应用程序属性的某些默认设置方法吗?
答案 0 :(得分:1)
要防止构建失败,可以在无法解析密钥的情况下为应用程序属性指定默认值。例如;
twitter.consumer.key=${CONSUMER_KEY:fallback}
twitter.consumer.secret=${CONSUMER_SECRET:fallback}
twitter.access.key=${ACCESS_KEY:fallback}
twitter.access.secret=${ACCESS_SECRET:fallback}
答案 1 :(得分:1)
使用@Value注释可以设置默认值:
@Value("${my.property:default}")