net.sf.dozer使用坑

dozer做什么的
Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。

Dozer支持简单属性映射,复杂类型映射,双向映射,隐式显式映射以及递归映射。这包括映射还需要在元素级别进行映射的集合属性。
注意:dozer 目前不支持集合之间的转换 ,需要自己进行处理,稍后我会提供一个简单的工具类.`
问题描述

在这里插入图片描述
错误描述关键信息:
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

通过上图可以知道是jar包冲突导致的(slf4j-log4j12 和 logback-classic),理论上排查任意一个都可以;但是现有日志框架使用logback,如果排查,则控制台不会有日志输出,如下图:
在这里插入图片描述
那就排除 slf4j-log4j12 依赖吧

问题分析
  1. 看看 slf4j-log4j12 是怎么来的
    在这里插入图片描述
    在idea左侧依赖树,不能找到依赖
    在这里插入图片描述
    pom.xml 的 Dependency Analyzer 也找不到
    在这里插入图片描述
    通过在pom右键的依赖树也找不到,如下图
    在这里插入图片描述
  2. Dockerfile配置
    COPY app.jar /tms-***.jar
    部署到测试环境后依然有 slf4j-log4j12 依赖
    然后从Tone下载的jar包,解压后如下所示在这里插入图片描述 5. net.sf.dozer
    在泰哥的帮助下,dozer是新增的依赖,怀疑是 dozer 引起。然后网上一阵搜索,底层确实依赖 slf4j-log4j12
  3. pom dozer依赖
<dependency>
			<groupId>net.sf.dozer</groupId>
			<artifactId>dozer</artifactId>
			<version>5.4.0</version>
</dependency>
  1. dozer依赖
    一般的依赖点开是这样
    在这里插入图片描述
    但 dozer 5.4.0 点开如下图
    在这里插入图片描述

是这个版本打的有问题,从idea左侧依赖树,都可以看到正确dozer的pom依赖,如下图
在这里插入图片描述

问题解决

升级版本

<dependency>
			<groupId>net.sf.dozer</groupId>
			<artifactId>dozer</artifactId>
			<version>5.5.1</version>
</dependency>

升级后,目测没有 slf4j-log4j12 的依赖,如果有,排查即可

使用当前版本

<dependency>
			<groupId>net.sf.dozer</groupId>
			<artifactId>dozer</artifactId>
			<version>5.4.0</version>
			<exclusions>
				<!--排除slf4j-log4j12-->
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
</dependency>
注意事项

官网在21年4月宣布停止维护,详见卧槽!Dozer 宣布停止维护,不要再用了。。,所以不建议使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值