tocrhz / mqtt-spring-boot-starter

MQTT starter for Spring Boot, easier to use.
Apache License 2.0
93 stars 47 forks source link

删除PayloadJacksonAutoConfiguration #18

Closed ChinaJeckXu closed 1 year ago

ChinaJeckXu commented 1 year ago

强烈建议删除PayloadJacksonAutoConfiguration,以免影响统一的JacksonAutoConfiguration,该项目只是作为组件化功能引入项目,不应该定义JacksonAutoConfiguration

tocrhz commented 1 year ago

其实是你误解了, 首先 PayloadJacksonAutoConfiguration 只是在 JacksonAutoConfiguration 执行完成后,往Spring里注入一些默认的类型转换Bean,所以不会出现影响 JacksonAutoConfiguration 执行的情况,而且也不属于自定义 JacksonAutoConfiguration ,甚至除了是在JacksonAutoConfiguration 之后执行以及名字类似以外,和 JacksonAutoConfiguration 没有任何关系。 其次 PayloadJacksonAutoConfiguration 只有引用 jackson 时才生效,如果没有引用jackson包,就不会执行这部分代码,区别只是少了几个默认的类型转换类。 另外这个包的依赖里,paho-mqtt以外的依赖都是可选的,基本不会出现依赖冲突。 所以如果你那出现了你说的情况,很大的可能是其他包的影响,或者你的项目里写了相关的类,原因是这个组件的机率很低。

ChinaJeckXu commented 1 year ago

其实是你误解了, 首先 PayloadJacksonAutoConfiguration 只是在 JacksonAutoConfiguration 执行完成后,往Spring里注入一些默认的类型转换Bean,所以不会出现影响 JacksonAutoConfiguration 执行的情况,而且也不属于自定义 JacksonAutoConfiguration ,甚至除了是在JacksonAutoConfiguration 之后执行以及名字类似以外,和 JacksonAutoConfiguration 没有任何关系。 其次 PayloadJacksonAutoConfiguration 只有引用 jackson 时才生效,如果没有引用jackson包,就不会执行这部分代码,区别只是少了几个默认的类型转换类。 另外这个包的依赖里,paho-mqtt以外的依赖都是可选的,基本不会出现依赖冲突。 所以如果你那出现了你说的情况,很大的可能是其他包的影响,或者你的项目里写了相关的类,原因是这个组件的机率很低。

很抱歉在这么晚还打扰您,我现在使用spring boot 2.7.5、Jackson 2.13.3,在特定的情况下,会将Request 请求参数序列化出错,比如 请求参数为tenantId,正常的值为"123456",会变成""123456"",多了引号。

ChinaJeckXu commented 1 year ago

或许是spring boot 2.7.5、Jackson 2.13.3的适配问题,我会去看下官方的依赖版本关系

tocrhz commented 1 year ago

@ChinaJeckXu #19 你的问题可能是这个

ChinaJeckXu commented 1 year ago

@ChinaJeckXu #19 你的问题可能是这个 最终,我还是做了针对性的处理^_^