Closed zhangxk-ocean closed 5 months ago
ServiceImpl类:
导致这个问题的可能有两个原因 1 xml需要放在resources下 2 springboot启动位置没有加包扫描
我实在application配置中将xml文件位置换了,然后启动位置也加包扫描了呀,在另一个项目中这么做的,启动正常
刚刚没注意看图了,不好意思哈 看下 xml 里面的 namesapce 是不是指向了对应的mapper.java
xml文件里面是写了一个createTag语句,指向了mapper.java
项目根目录有 asm-debug 的目录生成吗
没有
在这个地方断点看下这个报错的 mapper 的信息, loadClassCode(classModelEntry);
应该是没走到这
那往上一行断点,按理开始读取 bean 了,这步已经走完了,那最大的可能是 这个 map 是空的,还是扫描的位置出了问题
有点奇怪,直接就结束了
啊啊啊... 那只能直接断点在入口了https://github.com/nebula-contrib/ngbatis/blob/8b6b9d5d3d52a3ce5359a8165d947f2610185f10/src/main/java/org/nebula/contrib/ngbatis/NgbatisContextInitializer.java#L28
springboot是什么版本
没看版本 断点在入口就行了,要看什么呢
类没有被加载,这就是类没被扫描到吧,Application里的问题
会不会跟这个问题是一样的 https://github.com/nebula-contrib/ngbatis/issues/111 只是猜测哈
不是,我用的hosts
感觉这个是扫描包出的问题 zhelia这俩注解一起用也没问题吧,我试了试其他的项目,也没事
我也没这么写过诶,回头验证下,配置中心用的是啥,nacos 吗,把配置放到配置中心看看?
配置中心用的nacos,配置就放在了nacos里
我试了下,把Mapper和mapper.xml删掉,就能正常启动了,因为mapper报的错
nebula.pool-config.min-conns-size = 0 ? 这个值改成正的试试,让一启动就连接数据库,排除一下配置没读到的问题 之后再来排查是不是 bean 没扫描到的问题
这个值设置的是2
报错的原因应该是是mapper调用不到mapper.xml里面的方法
或者是service层调用mapper.java里的方法时报的错
是动态代理的过程没执行。代理类没生成,asm-debug 这个文件夹没生成的话,也说明 jvm 中没有接口对应的实现类
没看版本 断点在入口就行了,要看什么呢
你在这里往下执行,到 if nebula.hosts 的判断。 使用了 nacos 的话,这个方法会进两次,一次是空的直接跳过 if,第二次才会真正读到值
看到了,里面的nebulaPool的值是原始值,然后我就把nacos配置放到了bootstrap配置文件中,启动成功了,问题就是没有加载nacos里的配置,这是什么原因呢
两次 if 前读取的配置都是原始值吗?这个我还得再跟下
这是因为没有加载到nacos的配置
这边配置读取用的是 ConfigurableEnvironment 的接口, Springcloud 用的也是这个接口。
这是因为没有加载到nacos的配置
所以是项目搭建的问题?是的话,记得来记录下解决的过程哈
哈哈,也是个简单的问题,namespace错了,导致配置没加载上
看来是解决了?可以可以~
解决了
2.配置信息