2016-06-02 1 views
2

J'essaie de convertir une application web Tomcat Spring MVC traditionnelle en Spring Boot. La nouvelle application doit toujours utiliser le déploiement .war.Spring Boot - déployer le fichier .properties dans un dossier différent de 'WEB-INF/classes'

Pour diverses raisons, j'ai l'exigence obligatoire que le fichier application.properties réside dans un dossier WEB-INF/conf dans l'application déployée et pas dans le dossier WEB-INF/classes où Spring Boot met par défaut.

Dans la webapp originale que je pouvais mettre le fichier application.properties dans le dossier src/main/webapp/WEB-INF/conf (ils sont copiés à WEB-INF/conf dans l'application déployée), puis l'utiliser comme ceci:

<context:property-placeholder location="/WEB-INF/conf/application.properties"/> 

Quelle est la méthode de démarrage Spring se référer à cet endroit?

J'ai essayé d'ajouter chacun des éléments suivants:

spring.config.location=WEB-INF/conf/application.properties 

mais mon dossier ne application.properties toujours pas chargé.

+0

supprime la partie 'webapp' ... Le fichier est toujours au même emplacement. Mais encore, si cela fait partie de la guerre, pourquoi l'emplacement devrait-il être important? –

Répondre

0

Ce qui a finalement fonctionné était l'annotation @PropertySource suivante.

@SpringBootApplication 
@PropertySource(value = {"WEB-INF/conf/application.properties"}) 
public class MyApplication { 
     public static void main(String[] args) { 
     SpringApplication.run(MyApplication.class, args); 
    } 
} 

Il semble que ne pas spécifier classpath: ou file: au début d'un sentier permet d'utiliser un chemin relatif à la webapp.

Je ne suis toujours pas sûr de savoir pourquoi la spécification

spring.config.location=WEB-INF/conf/application.properties 

n'a pas eu le même effet.