J'ai créé une application web J2EE en utilisant Spring framework sur le serveur Tomcat, et mon application a besoin de lire certaines propriétés (comme les paramètres de connexion jdbs, les chemins de dossiers etc ...) dont j'ai besoin pour être externe. Ce que je veux dire, c'est qu'aujourd'hui j'ai mis le pot sur le serveur. Si dans 2 ans les paramètres de connexion DB ou les dossiers que je veux utiliser vont changer, je ne veux pas redéployer l'application, mais juste changer le fichier de propriétés.Application Web avec Spring: comment externaliser les propriétés des fichiers?
Ce que je en est maintenant un fichier .properties dans le classpath, et un haricot qui le lit:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:database.properties"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${jdbc.url}" />
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
database.properties:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/cheExport?useSSL=false
jdbc.username=root
jdbc.password=root
Comment puis-je accomplir mon but? Si je me souviens bien, il y a quelque chose que je peux faire dans le serveur XML, où je peux spécifier qu'un certain dossier contient un fichier de propriétés. Mais alors comment puis-je mettre les choses ensemble?
Dans ce post Read properties file outside JAR file est posé la même question, mais sans utiliser Spring, donc je pense que ce n'est pas utile dans mon cas
Je lis aussi qu'il est courant d'utiliser l'initialisation du printemps dans ce cas, mais je suis using Spring MVC
Ce que je ne comprends pas est la suivante: est-il possible de mettre à l'emplacement = « classpath » un fichier qui est externe au pot? Je veux dire, je voudrais mettre sur le serveur un dossier qui contient le .jar: root/myApp.jar, puis dans le même dossier le fichier de propriétés: root/database.properties – frabis
mis à jour pour vous. mon message. – Byeon0gam
J'ai essayé ceci et je ne comprends toujours pas comment cela fonctionne: J'ai obtenu un pot, et le fichier .properties (que j'ai mis exactement au même endroit, sous src/main/resources) est à l'intérieur du pot, dans le Dossier WEB-INF/classes/config, donc je ne peux pas le modifier. – frabis