Я работаю над проектом Spring 2.0 без аннотаций. Мы используем несколько компонентов PropertyPlaceholderConfigurer с различными пре-и суффиксами для загрузки свойств из разных файлов свойств. Это прекрасно работает.Как обнаружить неиспользуемые свойства весной
Из-за большого количества файлов свойств и свойств я хотел, чтобы приложение отображало свойства, которые не используется. Это означает, что свойства, которые настроены в файле свойств, но никогда не упоминаются в контексте приложения Spring.
Я написал bean-компонент, который реализует BeanFactoryPostProcessor, и сделал некоторые обманы, чтобы найти ссылки в контексте приложения для разных PropertyPlaceHolderConfigurers. Это дает мне список свойств, которые используются.
Однако я не могу добраться до свойств, которые были загружены PlaceHolderConfigurers. Из-за этого я не могу показать свойства, которые НЕ используются.
Есть ли (простой) способ доступа к свойствам PropertyPlaceholderConfigurer? Любые другие предложения по решению этой проблемы?
Редактировать: Раствор доступа к mergeProperties Metod, например, так:
PropertyPlaceholderConfigurer ppc =
(PropertyPlaceholderConfigurer) applicationContext.getBean("yourBeanId");
Method m = PropertiesLoaderSupport.class.getDeclaredMethod("mergeProperties",
new Class[] {});
m.setAccessible(true);
Properties loadedProperties = (Properties) m.invoke(propertyPlaceHolder, null);
После получения первоначально загруженные свойства, и извлечение в beandefinitions во время BeanFactoryPostProcessing, остальное было просто. Вычтите две коллекции и вуаля: теперь мы можем перечислить неиспользуемые свойства.
Это потребует редактирования всех свойств PropertyPlaceHolderConfigurers, что возможно, но я не хочу этого делать. Используя вышеприведенное решение, я также могу обнаружить недостающие свойства в новых PropertyPlaceHolderConfigurers, которые добавляются «новым парнем» :-) – Rolf