我正在寻找一个 commons beanutils 替代品。原因是 beanutils 依赖于与我正在使用的现有库冲突的 commons-logging。
我想要一个小的独立替代方案,它不会导致/最小的冲突。
我追求的主要功能是嵌套属性检索。
在此先感谢,史蒂文
我正在寻找一个 commons beanutils 替代品。原因是 beanutils 依赖于与我正在使用的现有库冲突的 commons-logging。
我想要一个小的独立替代方案,它不会导致/最小的冲突。
我追求的主要功能是嵌套属性检索。
在此先感谢,史蒂文
虽然财产处理不是Jackson的主要重点,但根据本文,它可以用于此目的。
基本思想是,您不仅可以从 POJO 读取/写入 JSON,还可以进行兼容转换:包括将 POJO“序列化”为 Java Map。由于您可以在表示之间来回切换,因此您基本上可以免费获得一个 bean introspector。
Jackson 没有外部依赖项,但您需要核心(流式处理 api、impls)和映射器 jar(数据绑定)。
Jodd有很好的库集合,看看Jodd BeanUtil是否有帮助。
您可以通过使用SFL4j 提供的替代公共日志桥实现来解决与公共日志的冲突。
通常,将 commons-logging.jar 替换为 jcl-over-slf4j.jar 将立即永久解决与公共日志记录相关的类加载器问题。
最终编写了我自己的迷你 beanutils 来解决这种依赖关系并完全删除了 commons-beanutils。
SLF4J 最终没有提供帮助,因为它破坏了其他一些依赖项(该死的 weblogic!)。
我自己的实现可能更慢,因为 commons-beanutils 似乎缓存了一些获取以删除一些反射调用。
如果您有兴趣获取我的实现的源代码,请联系我。
如果您使用的是 Maven,则可以像这样排除 commons-logging 依赖项:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
我对 Spring 做了同样的事情,它也需要公共日志记录。事实上 Spring 自己教会了我如何排除它。据我所知,我现在拥有一个无公共日志记录的环境。
更新:对于 SLF4J / Logback 之类的东西,您可能还需要在配置文件中使用它:
<logger name="org.apache.commons" level="OFF" />
与其他库没有冲突的有效替代方案是BULL ,您可以在DZone上找到如何使用它的指南。它提供了在应对时也执行对象转换的可能性。