今天在学习spring cloud 的时候,遇到一个项目启动问题。详细如下
spring cloud configserver 和spring cloud client 同时在一个项目下,作为项目的两个module同时存在。
问题是:
当启动configserver 是正常启动 端口设置为8090, 之后再启动client 时,client内的端口配置8080不生效,启动时查看日志发现,client启动时使用的端口还是为8090。导致启动端口冲突,client无法正常启动
在网上查询各种解决方案无果。
尝试失败的解决方案有:
修改每个module的configuration ,将右上角的允许并行运行勾选上,问题依旧没有解决
找到解决方案了!!!!
原因:
spring config server 使用的是本地项目路径,指定路径下面有两个配置文件 1.application.properties 2. my-test-dev.properties
spring cloud client 中使用配置中心的时候,虽然指定了 读取的的
spring.cloud.config.profile=dev, 但是 application.properties 里面的内容依旧会被默认加载到客户端配置中取,并且覆盖本地的配置!!!
最后导致spring cloud client 项目使用的端口,使用的是配置中心 configserver的端口启动。
总结:
spring cloud config server指定的配置文件仓库中最好不要放置 application.properties 、bootstrap.properties 这种springboot 默认的文件名称。导致 客户端在读取配置的之后,默认会将这些文件中的配置信息一并加载进来。