Tôi đang làm việc trên dự án Spring 2.0, không có chú thích. Chúng tôi đang sử dụng một số bean PropertyPlaceholderConfigurer với các tiền tố và hậu tố khác nhau để tải các thuộc tính từ các tệp thuộc tính khác nhau. Điều này làm việc rất đẹp.Cách phát hiện các thuộc tính không sử dụng trong Spring
Do số lượng lớn tệp và thuộc tính thuộc tính, tôi muốn ứng dụng liệt kê các thuộc tính là không được sử dụng. Điều đó có nghĩa là các thuộc tính được cấu hình trong một tệp thuộc tính, nhưng không bao giờ được tham chiếu trong ngữ cảnh ứng dụng Spring.
Tôi đã viết một bean thực hiện BeanFactoryPostProcessor và đã thực hiện một số thủ thuật để tìm các tham chiếu trong ngữ cảnh ứng dụng với các PropertyPlaceHolderConfigurers khác nhau. Điều này mang lại cho tôi một danh sách các thuộc tính được sử dụng.
Tuy nhiên, tôi không thể truy cập vào các thuộc tính được tải bởi Trình cấu hình PlaceHolderConfigurers. Do đó, tôi không thể hiển thị các thuộc tính không được sử dụng.
Có cách nào (đơn giản) để truy cập các thuộc tính của PropertyPlaceholderConfigurer không? Bất kỳ đề xuất nào khác về cách giải quyết vấn đề này?
Sửa: Các giải pháp đã được truy cập vào mergeProperties metod, như vậy:
PropertyPlaceholderConfigurer ppc =
(PropertyPlaceholderConfigurer) applicationContext.getBean("yourBeanId");
Method m = PropertiesLoaderSupport.class.getDeclaredMethod("mergeProperties",
new Class[] {});
m.setAccessible(true);
Properties loadedProperties = (Properties) m.invoke(propertyPlaceHolder, null);
Sau khi nhận được các thuộc tính đã nạp đầu tiên, và lấy các beandefinitions trong BeanFactoryPostProcessing, phần còn lại rất đơn giản. Trừ hai bộ sưu tập, và thì đấy: Bây giờ chúng ta có thể liệt kê các thuộc tính không sử dụng.
Điều đó sẽ yêu cầu tất cả các PropertyPlaceHolderConfigurers phải được chỉnh sửa, điều này là có thể, nhưng tôi không muốn làm. Bằng cách sử dụng giải pháp ở trên, tôi cũng có thể phát hiện các thuộc tính bị thiếu trong PropertyPlaceHolderConfigurers mới được thêm bởi "new guy" :-) – Rolf