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?
2 respuestas
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}
Con la anotación @Value es posible establecer un valor predeterminado:
@Value("${my.property:default}")
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].