公共豆类替代品

时间:2010-10-15 06:03:50

标签: java apache-commons-beanutils

我正在寻找一个公共beanutils替代品。 原因是beanutils依赖于commons-logging,这与我正在使用的现有库相冲突。

我想要一个小的独立替代方案,这将导致没有/最小的冲突。

我追求的主要功能是嵌套属性检索。

提前致谢, 史蒂芬

6 个答案:

答案 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)

BULL是与其他库没有冲突的有效替代方法,您可以找到有关如何在DZone上使用它的指南。它提供了在应对时也可以执行对象转换的可能性。