web-dev-qa-db-fra.com

Comment puis-je accéder à 'spring.application.name' lorsqu'il est défini dans bootstrap.properties?

J'ai l'exemple d'application Spring-boot 1.4.2.RELEASE suivant

@SpringBootApplication
public class Application {

    @Value("${spring.application.name}")
    private String applicationName;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Et j'ai la configuration suivante définie dans bootstrap.properties:

spring.application.name=sample-app

Lorsque je l'exécute, j'obtiens l'erreur suivante:

Java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.name' in string value "${spring.application.name}"

Une indication sur la raison pour laquelle il ne parvient pas à injecter 'spring.application.name'? Besoin de le définir là pour prendre en charge d'autres nuages ​​de démarrage de printemps.

12
Israel Fernández

La première réponse est correcte. Le fichier de propriétés par défaut est application.properties ou application.yml.

Le fichier bootstrap est correctement pour Spring Cloud.

Voir http://projects.spring.io/spring-cloud/spring-cloud.html#_the_bootstrap_application_context

Si vous utilisez Spring Cloud et que le fichier bootstrap ne fonctionne pas, vous devez activer le profil Spring "cloud".

Par exemple en utilisant:

./gradlew -Dspring.profiles.active=cloud bootrun 

ou

./mvnw spring-boot:run -Dspring.profiles.active=cloud
7
DannielWhatever

Par défaut, si vous ne spécifiez aucune source de propriétés, Spring Boot recherchera votre propriété dans le fichier application.properties. Par conséquent, vous devez renommer votre fichier de propriétés avec ce nom par défaut ou spécifier manuellement une source de propriétés pour votre bootstrap.properties

5
Duy Nguyen