Tengo un montón de frijoles Spring que se recogen del classpath a través de anotaciones, por ejemplo
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
// Implementation omitted
}
En el archivo Spring XML, hay un PropertyPlaceholderConfigurer definido:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/app.properties" />
</bean>
Quiero inyectar una de las propiedades de app.properites en el bean que se muestra arriba. No puedo simplemente hacer algo como
<bean class="com.example.PersonDaoImpl">
<property name="maxResults" value="${results.max}"/>
</bean>
Debido a que PersonDaoImpl no aparece en el archivo Spring XML (se recoge del classpath a través de anotaciones). Llegué a lo siguiente:
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
@Resource(name = "propertyConfigurer")
protected void setProperties(PropertyPlaceholderConfigurer ppc) {
// Now how do I access results.max?
}
}
¿Pero no tengo claro cómo accedo a la propiedad que me interesa ppc
?
PropertyPlaceholderConfigurer
ya no es la clase recomendada. Prefiero en su PropertySourcesPlaceholderConfigurer
lugar. En cualquier caso, puede usar la definición XML más corta <context:property-placeholder />
.