Ajouter des propriétés de construction à une application Spring Boot

1. Introduction

Habituellement, la configuration de construction de notre projet contient beaucoup d'informations sur notre application. Certaines de ces informations peuvent être nécessaires dans l'application elle-même. Ainsi, plutôt que de coder en dur ces informations, nous pouvons les utiliser à partir de la configuration de construction existante.

Dans cet article, nous verrons comment utiliser les informations de la configuration de construction du projet dans une application Spring Boot.

2. Les informations de construction

Disons que nous voulons afficher la description et la version de l'application sur la page d'accueil de notre site Web.

Habituellement, ces informations sont présentes dans pom.xml :

 4.0.0 spring-boot spring-boot war This is simple boot application for Spring boot actuator test 0.0.1-SNAPSHOT ... 

3. Référence des informations dans le fichier de propriétés de l'application

Maintenant, pour utiliser les informations ci-dessus dans notre application, nous devrons d'abord la référencer dans l'un de nos fichiers de propriétés d'application:

[email protected]@ [email protected]@

Ici, nous avons utilisé la valeur de la propriété de construction project.description pour définir la propriété d' application application-description . De même, la version de l'application est définie à l'aide de project.version .

Le bit le plus significatif ici est l'utilisation du caractère @ autour du nom de la propriété. Cela indique à Spring d'étendre la propriété nommée du projet Maven.

Désormais, lorsque nous construirons notre projet, ces propriétés seront remplacées par leurs valeurs de pom.xml .

Cette extension est également appelée filtrage des ressources. Il est à noter que ce type de filtrage n'est appliqué qu'à la configuration de production . Par conséquent, nous ne pouvons pas utiliser les propriétés de construction dans les fichiers sous src / test / resources .

Une autre chose à noter est que si nous utilisons l' indicateur addResources , l' objectif spring-boot: run ajoute src / main / resources directement au chemin de classe . Bien que cela soit utile à des fins de rechargement à chaud, cela évite le filtrage des ressources et, par conséquent, cette fonctionnalité également.

Maintenant, l'extension de propriété ci-dessus ne fonctionne que si nous utilisons spring-boot-starter-parent .

3.1. Expansion des propriétés sans spring-boot-starter-parent

Voyons comment nous pouvons activer cette fonctionnalité sans utiliser la dépendance spring-boot-starter-parent .

Tout d'abord, nous devons activer le filtrage des ressources dans le élément dans notre pom.xml :

  src/main/resources true  

Ici, nous avons activé le filtrage des ressources uniquement sous src / main / resources .

Ensuite, nous pouvons ajouter la configuration du délimiteur pour le maven-resources-plugin :

 org.apache.maven.plugins maven-resources-plugin   @  false  

Notez que nous avons spécifié la propriété useDefaultDelimiters sur false . Cela garantit que les espaces réservés Spring standard tels que $ {placeholder} ne sont pas développés par la compilation.

4. Utilisation des informations de construction dans les fichiers YAML

Si nous utilisons YAML pour stocker les propriétés de l'application, nous ne pourrons peut-être pas utiliser @ pour spécifier les propriétés de construction . C'est parce que @ est un caractère réservé dans YAML.

Mais, nous pouvons surmonter cela en configurant un délimiteur différent dans maven-resources-plugin :

 org.apache.maven.plugins maven-resources-plugin   ^  false  

Ou, simplement en remplaçant la propriété resource.delimiter dans le bloc de propriétés de notre pom.xml :

 ^ 

Ensuite, nous pouvons utiliser ^ dans notre fichier YAML:

application-description: ^project.description^ application-version: ^project.version^

5. Conclusion

Dans cet article, nous avons vu comment nous pourrions utiliser les informations de projet Maven dans notre application. Cela peut nous aider à éviter de coder en dur les informations déjà présentes dans la configuration de construction du projet dans nos fichiers de propriétés d'application.

Et bien sûr, le code qui accompagne ce tutoriel peut être trouvé sur GitHub.