J'ai un tas de haricots de printemps qui sont récupérés dans le chemin de classe via des annotations, par exemple
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
// Implementation omitted
}
Dans le fichier XML Spring, un PropertyPlaceholderConfigurer est défini:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/app.properties" />
</bean>
Je souhaite injecter l'une des propriétés de app.properites dans le bean illustré ci-dessus. Je ne peux pas simplement faire quelque chose comme
<bean class="com.example.PersonDaoImpl">
<property name="maxResults" value="${results.max}"/>
</bean>
Parce que PersonDaoImpl ne figure pas dans le fichier XML Spring (il est récupéré dans le chemin de classe via des annotations). J'ai autant que ce qui suit:
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
@Resource(name = "propertyConfigurer")
protected void setProperties(PropertyPlaceholderConfigurer ppc) {
// Now how do I access results.max?
}
}
Mais je ne sais pas comment j'accède à la propriété qui m'intéresse ppc
?
PropertyPlaceholderConfigurer
n'est plus la classe recommandée. Préférez PropertySourcesPlaceholderConfigurer
plutôt. Dans tous les cas, vous pouvez utiliser la définition XML plus courte <context:property-placeholder />
.