总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
Seata-All 在引入相应的jar包的时候都是 <scope>provide</scope>
说明我们要引入对应的依赖才行; 按需引入;
同理 如果用的是Redis的注册中心也要引入redis的客户端
com.alibaba.nacos
nacos-client
1.3.0
redis.clients
jedis
2.9.0
坑3 NotSupportYetException: not support register type: null
在引入seata的过程中,启动的时候报如下的错误
nested exception is io.seata.common.exception.NotSupportYetException:
not support register type: null
io.seata.common.exception.ShouldNeverHappenException:
Can’t find any object of class org.springframework.context.ApplicationContext
他的原因就是SpringApplicationContextProvider没有被执行到
因为我的是用seata-spring-boot-starter
方式启动的;然后又手贱配置了GlobalTransactionScanner
那么这个GlobalTransactionScanner
开始加载的时候,SpringApplicationContextProvider
并没有被执行;GlobalTransactionScanner
需要依赖于SpringApplicationContextProvider
, 所以报错了
解决方法: seata-spring-boot-starter
方式启动已经自动加载了GlobalTransactionScanner
见SeataAutoConfiguration
如果一定要自己手动加载的话 ,请加上注解
@DependsOn({BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER, BEAN_NAME_FAILURE_HANDLER})
但是,没有必要手动配置
配置 GlobalTransactionScanner,使用 seata-all 时需要手动配置,使用 seata-spring-boot-starter 时无需额外处理。
坑4 can not register RM,err:can not connect to services-server.
之前一直好好的,过几天启动就报这个错了,后来我看了一下注册中心,注册了好几个ip;
都是之前注册过的,不知道为啥没有被清理;
io.seata.common.exception.FrameworkException:
can not register RM,err:can not connect to services-server.
解决方案 :把key删掉重新启动 seata-server
坑5 Could not initialize class io.seata.rm.datasource.undo.UndoLogParserFactory$SingletonHolder
接入Seata的时候 有报下面的错误
java.lang.NoClassDefFoundError:
Could not initialize class io.seata.rm.datasource.undo.UndoLogParserFactory$SingletonHolder
表面上看起来是那个异常,但是你打个断点进去查看会发现最终的异常是下面这个
java.lang.NoClassDefFoundError:
com/fasterxml/jackson/databind/ObjectMapper
解决方案:加入jackson-databind依赖就行
最后
我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习
已经将知识体系整理好(源码,笔记,PPT,学习视频)
…(img-4JuweJvk-1715655533642)]