2017-06-26 1 views
0

J'utilise Spring pour développer une application Java. J'ai stocké certaines propriétés dans un fichier de propriétés, qui est empaqueté en tant que fichier JAR. Les propriétés sont lues dans le code à l'aide de l'annotation @Value. Maintenant, quand je déploie le JAR, je veux fournir de nouvelles valeurs pour certaines de ces propriétés. Je sais que nous pouvons donner la nouvelle valeur de propriété comme "-Dproperty-name = property-value". Mais existe-t-il un moyen de donner lui-même un nouveau fichier de propriétés en tant qu'entrée ayant de nombreuses propriétés à surcharger ensemble?Spring: Comment donner un fichier de propriétés à Java.exe

Merci Chenbaga

Répondre

0

Vous pouvez avoir un certain nombre de fichiers de propriétés, puis chargez ensuite avec un paramètre spécifique du système.

@Configuration 
@PropertySource(value = {"classpath:/app.properties", "file:/${configLocation}/app.properties"}, ignoreResourceNotFound = true) 

public class AppConfig { 

Ajoutez votre app.properties par défaut à /src/resources/app.properties

Ensuite, lorsque vous démarrez votre machine virtuelle Java que vous pouvez remplacer avec

-DconfigLocation=/home/config 

Si le configLocation est présent, il sera d'abord ramasser les propriétés par défaut, puis remplacer puis avec ceux du fichier. Si le paramètre système n'est pas présent, il ne va pas déposer le fichier et utiliser les valeurs par défaut.

Voir http://docs.spring.io/spring/docs/4.3.9.RELEASE/javadoc-api/org/springframework/context/annotation/PropertySource.html pour plus d'exemples

+0

Merci Essec. C'est ce que je fais maintenant. Mais j'ai besoin d'écraser certaines de ces valeurs de propriétés quand j'exécute le JAR. Je veux mettre toutes ces propriétés dans un fichier, et donner ce fichier comme entrée à JVM, au lieu de donner chaque propriété comme -D lors de l'exécution de JAR. –

+0

@ ChenbagaMurugan Je n'ai pas compris votre question, regardez la réponse maintenant. Il y a aussi beaucoup d'exemples de cela sur le lien de printemps. –