BUG收集

配置bug

MyBatis bug

  • factoryBeanObjectType的兼容性问题

Spring Boot 在 3.2 版本中更新了 FactoryBeanRegistrySupport#getTypeForFactoryBeanFromAttributes 方法,它要求 factoryBeanObjectType 必须是 Class<?>ResolvableType,绝不接受 String

旧版本的 MyBatis-Spring 在 ClassPathMapperScanner.processBeanDefinitions() 中将 beanClassName(一个 String)赋给了 factoryBeanObjectType

slove:

我们使用MyBatis-Plus starter3.5.5。然后现在基本都要升级成springboot3,因为springaialibaba等框架也是需要3的

然后我们分模块的时候,为了避免@MapperScan重复扫描,我们只在业务模块进行mybatisplus的导入,然后common模块就只导入一个annotion。不到人core

防止出现重复扫描的问题。

nacos配置bug

  • 缺少NacosShutdownHook,然后导致nacos-clint无法运行,添加nacos钩子然后让其更美观的关闭

关闭通知中心,然后强制关闭所有的后台线程

reason:

Spring 会先销毁 Bean,然后执行注册的 ShutdownHook,如果 Nacos 没有注册自己的钩子,那它的后台线程就会存活到 JVM 强制退出。

Nacos 客户端(nacos-client)在正常退出时会通过 ShutdownHook 释放 HttpClient、长连接、定时任务等资源。
如果没有这个钩子,DefaultHttpClientFactory 之类的类无法加载或初始化不完整,就会出现 NoClassDefFoundError,或者后台线程挂起不退出。

slove:

所以我们需要在应用的时候手动注册一个nacos的关闭的钩子,通知中心 → 释放 HttpClient → 停止定时任务

然后为了防止还有存活,再强制关闭所有的后台线程