Ho un sacco di fagiolini che vengono raccolti dal percorso di classe tramite annotazioni, ad es
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
// Implementation omitted
}
Nel file XML Spring, c'è un PropertyPlaceholderConfigurer definito:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/app.properties" />
</bean>
Voglio iniettare una delle proprietà da app.properites nel bean mostrato sopra. Non posso semplicemente fare qualcosa del genere
<bean class="com.example.PersonDaoImpl">
<property name="maxResults" value="${results.max}"/>
</bean>
Perché PersonDaoImpl non è presente nel file XML Spring (viene prelevato dal percorso di classe tramite annotazioni). Ho quanto segue:
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
@Resource(name = "propertyConfigurer")
protected void setProperties(PropertyPlaceholderConfigurer ppc) {
// Now how do I access results.max?
}
}
Ma non mi è chiaro come accedo alla proprietà a cui sono interessato ppc
?
PropertyPlaceholderConfigurer
non è più la classe consigliata. Preferisci PropertySourcesPlaceholderConfigurer
invece. In ogni caso, è possibile utilizzare la definizione XML più breve <context:property-placeholder />
.