2017-08-14 2 views
0

J'ai besoin de jouer autour des clés d'un fichier de propriétés. La clé sera dynamique, j'ai donc besoin du bean du fichier de propriétés comme mentionné ci-dessous en tant qu'application Spring en cours.Comment puis-je obtenir le bean d'un fichier de propriétés dans Spring-Boot?

Configuration du printemps:

<bean id="multipleWriterLocations" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="ignoreResourceNotFound" value="true" /> 
     <property name="locations"> 
      <list> 
       <value>classpath:writerLocations.properties</value> 
       <value>file:config/writerLocations.properties</value> 
      </list> 
     </property> 
    </bean> 

code Java:

Properties prop = appContext.getBean("multipleWriterLocations") 

J'ai besoin de l'instance même de haricots Propriétés au printemps-démarrage. J'ai besoin de transformer l'application Spring existante en Spring-Boot sans changer les fonctionnalités.

Une façon d'obtenir la valeur du fichier de propriétés en utilisant @PropertySource(), mais dans ce cas j'ai besoin du nom de la clé. Mais dans mon cas, le nom de la clé n'est pas connu et je dois récupérer keySet à partir du bean Properties.

Répondre

0

Vous pouvez utiliser @ImportResource("classpath:config.xml")config.xml contient votre PropertiesFactoryBean ci-dessus, puis lier automatiquement dans votre @SpringBootApplication ou @Configuration classe.

@SpringBootApplication 
@ImportResource("classpath:config.xml") 
public class App { 
    public App(PropertiesFactoryBean multipleWriterLocations) throws IOException { 
     // Access the Properties populated from writerLocations.properties 
     Properties properties = multipleWriterLocations.getObject(); 
     System.out.println(properties); 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(App.class, args); 
    } 
} 
+0

Merci à ck1 pour l'aide. Cela a fonctionné parfaitement. – Saurabh