我正在寻找一个公共beanutils替代品。 原因是beanutils依赖于commons-logging,这与我正在使用的现有库相冲突。
我想要一个小的独立替代方案,这将导致没有/最小的冲突。
我追求的主要功能是嵌套属性检索。
提前致谢, 史蒂芬
答案 0 :(得分:6)
虽然属性处理不是Jackson的主要关注点,但可以根据this article使用它。
基本思想是,您不仅可以向/从POJO读取/写入JSON,还可以进行兼容的转换:包括将POJO“序列化”为Java Map。由于您可以在表示之间来回切换,因此您基本上可以免费获得bean的内部跟踪器。
杰克逊没有外部依赖,但你需要核心(流式api,impls)和映射器jar(数据绑定)。
答案 1 :(得分:5)
Jodd拥有非常好的库集合,请参阅Jodd BeanUtil是否有帮助。
答案 2 :(得分:1)
您可以使用alternate commons-logging bridge implementation provided by SFL4j解决与commons-logging的冲突。
通常,用jcl-over-slf4j.jar替换commons-logging.jar将立即永久地解决与公共日志记录相关的类加载器问题。
答案 3 :(得分:1)
结束编写我自己的迷你beanutils来解决这个依赖关系并完全删除了commons-beanutils。
SLF4J并没有最终帮助,因为它破坏了其他一些依赖项(该死的weblogic!)。
我自己的实现可能更慢,因为commons-beanutils似乎缓存了一些提取以删除一些反射调用。
如果您有兴趣获取我的实施的源代码,请告诉我。
答案 4 :(得分:0)
如果您正在使用Maven,则可以排除公共日志记录依赖关系,如下所示:
<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做了同样的事情,这也需要公共记录。事实上,春天自己taught me how to exclude it。据我所知,我现在有一个无公共记录的环境。
更新:对于类似SLF4J / Logback的内容,您可能还需要在配置文件中使用此功能:
<logger name="org.apache.commons" level="OFF" />
答案 5 :(得分:0)