加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Spring中检测未使用的属性

发布时间:2020-12-15 01:23:32 所属栏目:大数据 来源:网络整理
导读:我正在开发一个没有注释的Spring 2.0项目.我们使用具有不同前缀和后缀的几个PropertyPlaceholderConfigurer bean来加载来自不同属性文件的属性.这很好用. 由于存在大量属性文件和属性,我希望应用程序列出未使用的属性.这意味着,在属性文件中配置但从未在Spri

我正在开发一个没有注释的Spring 2.0项目.我们使用具有不同前缀和后缀的几个PropertyPlaceholderConfigurer bean来加载来自不同属性文件的属性.这很好用.

由于存在大量属性文件和属性,我希望应用程序列出未使用的属性.这意味着,在属性文件中配置但从未在Spring应用程序上下文中引用的属性.

我编写了一个实现BeanFactoryPostProcessor的bean,并且在应用程序上下文中找到了不同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);

在获取最初加载的属性并在BeanFactoryPostProcessing期间获取beandefinitions之后,其余的很简单.减去两个集合,瞧:我们现在可以列出未使用的属性.

最佳答案
您可以尝试使用反射调用受保护的方法mergeProperties来获取完整的属性列表,然后,正如其他海报已经说过的那样,删除实际用于最终使用未使用属性集的所有属性.

对于生产代码可能有些过于讨厌,但我假设您只在单元测试设置中运行它才能生成此报告.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读