Eu tenho um monte de beans Spring que são retirados do caminho de classe por meio de anotações, por exemplo
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
// Implementation omitted
}
No arquivo XML Spring, há um PropertyPlaceholderConfigurer definido:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/app.properties" />
</bean>
Desejo injetar uma das propriedades de app.properites no bean mostrado acima. Não posso simplesmente fazer algo como
<bean class="com.example.PersonDaoImpl">
<property name="maxResults" value="${results.max}"/>
</bean>
Como PersonDaoImpl não aparece no arquivo XML Spring (ele é obtido no caminho de classe por meio de anotações). Eu tenho o seguinte:
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
@Resource(name = "propertyConfigurer")
protected void setProperties(PropertyPlaceholderConfigurer ppc) {
// Now how do I access results.max?
}
}
Mas não está claro para mim como acesso o imóvel em que estou interessado ppc
?
PropertyPlaceholderConfigurer
não é mais a classe recomendada. Prefira PropertySourcesPlaceholderConfigurer
. Em qualquer caso, você pode usar a definição XML mais curta <context:property-placeholder />
.