Nous développons une grande solution de vente électronique J2ee. Il y a beaucoup d'intégrations: CMS, ERP, serveur de messagerie, etc. Tous ces systèmes sont divisés en environnements de test et de production.Comment différencier les propriétés de test et de production dans une application?
Nous devons déployer notre application sur nos serveurs de test avec une configuration de test et, lorsqu'elle est déployée sur nos serveurs de production, elle doit utiliser la configuration de production. Comment pouvons-nous faire en sorte que notre application sélectionne les bonnes propriétés?
La chose que nous avons essayé est jusqu'à présent:
Tous nos fichiers de propriétés contiennent des propriétés d'essai et les propriétés de production
test.mvxapi.server = SERV100TS test.mvxapi.username = user test.mvxapi.password = password test.mvxapi.port = 6006 test.mvxapi.cono = 600 mvxapi.server = SERV10001 mvxapi.username = user mvxapi.password = password mvxapi.port = 6001 mvxapi.cono = 100
Le Util qui lit ces propriétés a un interrupteur: isTest() qui préfixe la clé avec "test".
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
Le commutateur est défini par une autre propriété créée par notre serveur de génération. Lorsque le .EAR est construit, le script de nos serveurs de production injecte (input to build.xml) "isProduction = true" dans system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
Je ne suis pas sûr que ce soit la meilleure façon de le faire. Si, pour une raison quelconque, "isProduction = false" est mal engagé dans notre environnement de production, tout l'enfer est libre.
J'ai lu des personnes qui ont des propriétés localement sur le serveur. Mais nous ne voulons vraiment pas que les fichiers soient répartis. Nous avons un cluster de serveurs de production. S'assurer que chaque serveur a le bon fichier de propriétés ne semble pas sûr
Beaucoup ont changé la taille 2009 :) Le printemps a maintenant un moyen de le faire dans les profils: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html – Tommy