gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:41 25 4
gpt4 key购买 nike

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

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

我编写了一个实现 BeanFactoryPostProcessor 的 bean,并做了一些技巧以在应用程序上下文中找到对不同 PropertyPlaceHolderConfigurer 的引用。这给了我一个使用的属性列表。

但是,我无法获取由 PlaceHolderConfigurers 加载的属性。因此,我无法显示未使用的属性。

是否有一种(简单的)方法来获取 PropertyPlaceholderConfigurer 的属性?关于如何解决这个问题还有其他建议吗?

编辑:解决方案是访问 mergeProperties 方法,如下所示:

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 期间获取 bean 定义后,剩下的就很简单了。减去两个集合,瞧:我们现在可以列出未使用的属性。

最佳答案

您可以尝试调用 protected 方法 mergeProperties使用反射来获取完整的属性列表,然后,正如其他张贴者已经说过的那样,删除所有实际使用的属性,最终得到一组未使用的属性。

对于生产代码来说可能有点太老套了,但我假设您只会在单元测试设置中运行它来生成此报告。

关于java - 如何在 Spring 中检测未使用的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/879965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com