在使用上架商品功能时,在debug时候,发现在将数据发送给ES保存时,无法远程调用es的服务,报错404找不到接口,如下图:
一开始以为是openFeign的问题,经过检查,各种接口、注解都没问题,而且这个404感觉不是找不到路径的问题,感觉是服务本身的问题,后来写了个简单的controller,用postman测试一下
可以说相当奇怪了,这种404还真没遇到过,把响应结果复制保存成html,访问一下更是给我惊了:
这是哪里出了问题呢,我觉得可能是elasticsearch和springcloud冲突了,于是新建了一个项目,除了web依赖,什么都没有,然后一步步的加上依赖,
一开始能正常访问到:直到加上了common模块,就开始报这个错了,
**第一步:**猜想可能是application.properties的问题,于是换成yml文件,
spring:
application:
name: gulimall-test2
server:
port: 12003
项目启动报错:导致这个问题的原因是因为,在 pom.xml 配置文件中,配置了数据连接技术 spring-boot-starter-jdbc 包 ,在启动配置文件时 ,Spring Boot 的自动装配机制就会去配置文件中找,相关的数据库的连接配置信息,如果找不到则抛出异常信息
这个在启动类注解上排除DataSource自动装配即可:exclude = DataSourceAutoConfiguration.class
,启动仍旧报错,显然是没起到作用,后来猜测,可能是依赖中包含了druid-spring-boot-starter,会再次扫描数据源,增加排除依赖:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class})
成功启动访问:
后续将配置文件换回properties,启动,仍旧报错404,真是奇了怪了
中间还有个小插曲,将配置文件替换为yml时候,yml直接没生效,端口还是8080,这里反复好几次,bug无法复现了,但是找到了对应的解决方法:
完美解决failed to configure a datasource: ‘url‘ attribute is not specified and no em
参考链接:
exclude= {DataSourceAutoConfiguration.class}失效 解决方案