6

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

我想要一个小的独立替代方案,它不会导致/最小的冲突。

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

在此先感谢,史蒂文

4

6 回答 6

6

虽然财产处理不是Jackson的主要重点,但根据本文,它可以用于此目的。

基本思想是,您不仅可以从 POJO 读取/写入 JSON,还可以进行兼容转换:包括将 POJO“序列化”为 Java Map。由于您可以在表示之间来回切换,因此您基本上可以免费获得一个 bean introspector。

Jackson 没有外部依赖项,但您需要核心(流式处理 api、impls)和映射器 jar(数据绑定)。

于 2011-02-02T18:41:23.040 回答
5

Jodd有很好的库集合,看看Jodd BeanUtil是否有帮助。

于 2014-09-10T00:35:48.100 回答
2

您可以通过使用SFL4j 提供的替代公共日志桥实现来解决与公共日志的冲突。

通常,将 commons-logging.jar 替换为 jcl-over-slf4j.jar 将立即永久解决与公共日志记录相关的类加载器问题。

于 2010-10-15T06:15:05.787 回答
1

最终编写了我自己的迷你 beanutils 来解决这种依赖关系并完全删除了 commons-beanutils。

SLF4J 最终没有提供帮助,因为它破坏了其他一些依赖项(该死的 weblogic!)。

我自己的实现可能更慢,因为 commons-beanutils 似乎缓存了一些获取以删除一些反射调用。

如果您有兴趣获取我的实现的源代码,请联系我。

于 2010-10-27T02:35:55.280 回答
1

如果您使用的是 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" />
于 2013-07-15T14:54:14.903 回答
0

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

于 2020-12-16T15:20:47.623 回答