Estoy trabajando en un proyecto de Spring 2.0, sin anotaciones. Estamos utilizando varios beans PropertyPlaceholderConfigurer con diferentes pre y sufijos para cargar propiedades de diferentes archivos de propiedades. Esto funciona maravillosamente.Cómo detectar propiedades no utilizadas en Spring
Debido a la gran cantidad de archivos de propiedades y propiedades, quería que la aplicación enumerara las propiedades que son no utilizadas. Eso significa, propiedades que están configuradas en un archivo de propiedades, pero nunca referenciadas en el contexto de la aplicación Spring.
Escribí un bean que implementa BeanFactoryPostProcessor, e hice algunos trucos para encontrar referencias en el contexto de la aplicación a los diferentes PropertyPlaceHolderConfigurers. Esto me da una lista de propiedades que se utilizan.
Sin embargo, no puedo acceder a las propiedades cargadas por los PlaceHolderConfigurers. Por eso, no puedo mostrar las propiedades que NO se usan.
¿Hay una manera (simple) de acceder a las propiedades de un PropertyPlaceholderConfigurer? ¿Alguna otra sugerencia sobre cómo resolver este problema?
Editar: La solución se accede a la metod mergeProperties, así:
PropertyPlaceholderConfigurer ppc =
(PropertyPlaceholderConfigurer) applicationContext.getBean("yourBeanId");
Method m = PropertiesLoaderSupport.class.getDeclaredMethod("mergeProperties",
new Class[] {});
m.setAccessible(true);
Properties loadedProperties = (Properties) m.invoke(propertyPlaceHolder, null);
Después de conseguir las propiedades cargados originalmente, y traer los beandefinitions durante el BeanFactoryPostProcessing, el resto era simple. Reste las dos colecciones, y listo: ahora podemos enumerar las propiedades no utilizadas.
Eso requeriría que se editen todos los PropertyPlaceHolderConfigurers, lo cual es posible, pero no quiero hacerlo. Al usar la solución anterior, también puedo detectar las propiedades faltantes en los nuevos PropertyPlaceHolderConfigurers que se agregan por "el chico nuevo" :-) – Rolf