1.对于整合nacos服务注册时,因为我们使用的是renren快速开发,可能会导冲突问题然后发生注册失败,以及改了版本内部出现的代码问题接下来我将会逐步将会发生的问题一步一步解决。
1.1 在使用renren-fast时需要将其注册到nacos上一遍gateway路由到他。但是在整合时出现了springboot版本不兼容问题。其中renren-fast使用的是springboot2.6.6版本。而我开发时使用的是2.1.18.RELEASE版本。在导入我自己的common模块到renren-fast项目下是出现版本冲突。
解决方案:
1.使用新版nacos,不导入common依赖。
2.将renren-fast的springboot降低版本。
Nacos跟springboot版本冲突问题,将renrenfast中pom的
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
版本降低改成与项目使用的一致即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.18.RELEASE</version>
<relativePath/>
</parent>
降低版本号之后,可能会引起Java程序中某些方法符号找不到问题(问题如下):
这个问题其实解决思路很简单,找不到就说明不存在,仔细一看发现(allowedOriginPatterns)是解决跨域问题的方法,只是改变了名字和实现方式而已,因为新版和旧版之间有些方法会做出更新,旧版本也能找到类似的api。(allowedOrigins),不存在首先可以想到两点,第一没有依赖(依赖出现问题,改变依赖),第二点就是可能版本不一致,其使用方法名发生了改变,我们重新找到之前使用的方法即可,将找不到的方法代码那一块替换成有的方法代码如下:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
更改方法之后,再次重新启动,发现启动还有报错,但是程序还是可以正常运行,仔细观察发现报错提示,注入naocs注册服务失败
因为我们这里nacos的注册配置写在了application.yml中,如将nacos配置写在application.yml中,nacos在初始化的时候是读取不到配置的。
解决方案: 将nacos配置文件写到bootstrap.yml中即可解决这个问题;
更改之后发现还是有报错:
提示还是nacos注册服务失败,endpoint is blank原来是我们引入common模块中导入了spring-cloud-starter-alibaba-nacos-config依赖,而我们并没有在命名空间配置相关文件,即为null,这时我们只需要在pom中将依赖排除就可以解决问题了
解决完成!!!