web-dev-qa-db-fra.com

Comment obtenir la valeur de propriété dans une classe de haricots de printemps dans ma classe?

Les choses que j'ai faites sont:

  • Création d'un fichier de propriétés (data.properties).
  • Création d'un fichier Spring.xml (j'utilise un espace réservé de propriété)
  • Créé une classe de haricots.
  • J'ai une classe où je dois utiliser la valeur de l'URL.
  • J'ai un fichier web.xml qui a context-param où je règle la valeur param sur le chemin du fichier Spring.xml.
  • Mes codes sont donnés ci-dessous:

Propertyfile: url = sampleurl

Spring.xml:

<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath*:data.properties*"/>

</bean>

<bean id="dataSource" class="org.tempuri.DataBeanClass">
    <property name="url" value="${url}"></property>
</bean>

classe de haricots

public class DataBeanClass extends PropertyPlaceholderConfigurer{
private String url;

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}
}

entrée dans web.xml

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:Spring*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Maintenant, mon problème est que je ne sais pas quelle méthode de PropertyPlaceholderConfigurer devrais-je remplacer et que devrais-je faire pour définir la valeur de la variable url de sorte que je puisse l'appeler depuis d'autres classes à l'aide de la méthode getproperty ().

4
antony.ouseph.k

Vous pouvez annoter votre propriété de bean comme ceci, puis spring l'injectera automatiquement à partir de votre fichier de propriété.

@Value("${url}")
private String url;

Vous n'avez pas besoin d'étendre PropertyPlaceholderConfigurer

Définir votre bean comme ceci va automatiquement peupler l'URL, mais l'annotation semble être le moyen le plus simple

<bean id="dataSource" class="org.tempuri.DataBeanClass">
   <property name="url" value="${url}"></property>
</bean>
11
ssk

Veuillez effectuer le processus suivant pour obtenir la valeur du fichier de propriétés en classe.

  1. Définissez le bean pour le fichier de propriétés dans votre spring.xml
    <util:properties id="dataProperties" location="classpath:/data.properties"/>

  2. conservez vos data.properties sous src/main/resources.

  3. Utilisez le code suivant pour obtenir la valeur du fichier de propriétés, par exemple, pour obtenir la valeur de la clé url dans data.properties.

private @Value("#{dataProperties['url']})
String url;

3
shrey

Les fichiers de propriétés peuvent être rendus accessibles à Spring via l'élément de l'espace de noms suivant dans Spring.xml

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

Et puis vous pouvez utiliser comme

@Autowired
private Environment env;
...
String url=env.getProperty("url"));

Remarque:

l'utilisation de <property-placeholder> n'exposera pas les propriétés à l'environnement Spring. Cela signifie que l'extraction de la valeur comme celle-ci ne fonctionnera pas - elle retournera null

0
Sandhu Santhakumar