148 votes

Comment lire les valeurs du fichier de propriétés?

J'utilise le printemps. J'ai besoin de lire les valeurs du fichier de propriétés. Ce fichier de propriétés interne n'est pas le fichier de propriétés externe. fichier de propriétés peut être comme ci-dessous.

 some.properties ---file name. values are below.

abc = abc
def = dsd
ghi = weds
jil = sdd
 

J'ai besoin de lire ces valeurs à partir du fichier de propriétés de manière non traditionnelle. comment y arriver? y at-il une dernière approche avec le printemps 3.0?

Merci!

210voto

mrembisz Points 6391

Configurez PropertyPlaceholder dans votre contexte:

 <context:property-placeholder location="classpath*:my.properties"/>
 

Ensuite, vous vous référez aux propriétés de vos haricots:

 @Component
class MyClass {
  @Value("${my.property.name}")
  private String[] myValues;
}
 

EDIT: a mis à jour le code pour analyser la propriété avec plusieurs valeurs séparées par des virgules:

 my.property.name=aaa,bbb,ccc
 

Si cela ne fonctionne pas, vous pouvez définir un bean avec des propriétés, l'injecter et le traiter manuellement:

 <bean id="myProperties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      <value>classpath*:my.properties</value>
    </list>
  </property>
</bean>
 

et le haricot:

 @Component
class MyClass {
  @Resource(name="myProperties")
  private Properties myProperties;

  @PostConstruct
  public void init() {
    // do whatever you need with properties
  }
}
 

50voto

mokshino Points 346

En classe de configuration

 @Configuration
@PropertySource("classpath:/com/myco/app.properties")
public class AppConfig {
   @Autowired
   Environment env;

   @Bean
   public TestBean testBean() {
       TestBean testBean = new TestBean();
       testBean.setName(env.getProperty("testbean.name"));
       return testBean;
   }
}
 

28voto

Voici une réponse supplémentaire qui m'a également beaucoup aidé à comprendre comment cela fonctionnait: http://www.javacodegeeks.com/2013/07/spring-bean-and-propertyplaceholderconfigurer.html

tous les beans BeanFactoryPostProcessor doivent être déclarés avec un modificateur statique

 @Configuration
@PropertySource("classpath:root/test.props")
public class SampleConfig {
 @Value("${test.prop}")
 private String attr;
 @Bean
 public SampleService sampleService() {
  return new SampleService(attr);
 }

 @Bean
 public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
  return new PropertySourcesPlaceholderConfigurer();
 }
}
 

6voto

instanceOfObject Points 982

Vous devez placer un bean PropertyPlaceholderConfigurer dans le contexte de votre application et définir sa propriété location.

Voir les détails ici: http://www.zparacha.com/how-to-read-properties-file-in-spring/

Vous devrez peut-être modifier un peu votre fichier de propriété pour que cela fonctionne.

J'espère que ça aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X