Tengo lo siguiente en mi 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}

El entorno establece las tres propiedades principales cuando la aplicación pasa a una instancia de heroku. Los valores que establece el entorno se utilizan para hacer conexiones a la base de datos específicas de ese entorno. Todo esta bien.

El problema es con los últimos cuatro. Como se trata de información confidencial, también necesito que el medio ambiente las inyecte. Luego usé el cableado automático para agregarlos a un componente de arranque de resorte.

@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;

Ahora, cuando compilo la aplicación, se queja de no poder resolver ACCESS_KEY, etc., porque no tengo estas variables de entorno en mi máquina local.

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

¿Cómo puedo construir la aplicación sin establecer explícitamente estos valores? ¿Existe, por ejemplo, alguna forma de establecer valores predeterminados para las propiedades de la aplicación si no se pueden resolver?

0
Rudi Kershaw 5 mar. 2017 a las 14:49

2 respuestas

La mejor respuesta

Para evitar que falle la compilación, puede especificar valores predeterminados para las propiedades de la aplicación si no se puede resolver la clave. Por ejemplo;

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
Rudi Kershaw 5 mar. 2017 a las 13:05

Con la anotación @Value es posible establecer un valor predeterminado:

@Value("${my.property:default}")
1
user5327896user5327896 5 mar. 2017 a las 12:01