Spring boot Spring Eureka客户端未从配置文件中看到服务器端口

Spring boot Spring Eureka客户端未从配置文件中看到服务器端口,spring-boot,spring-cloud,netflix-eureka,Spring Boot,Spring Cloud,Netflix Eureka,我有一个基于springboot的应用程序,它被部署到jar中。它具有maven多模块项目的形式,包含以下部分: 网 服务 存储库 模型 我的web模块需要所有其他模块自行构建,并在其资源目录中包含以下文件: bootstrap.yml bootstrap.yml包含以下配置: eureka: client: eureka-server-port: 8761 server: port: 8763 context-path: /foo-service/rest spri

我有一个基于springboot的应用程序,它被部署到jar中。它具有maven多模块项目的形式,包含以下部分:

  • 服务
  • 存储库
  • 模型
我的web模块需要所有其他模块自行构建,并在其资源目录中包含以下文件:

  • bootstrap.yml
bootstrap.yml包含以下配置:

eureka:
  client:
    eureka-server-port: 8761
server:
  port: 8763
  context-path: /foo-service/rest
spring:
  application:
    name: foo-service
因此,我希望在唤醒期间,它将使用端口8761并将自己注册到Eureka服务。由于某种原因,当我在调试时:

org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration#eurekaInstanceConfigBean
EurekaInstanceConfigBean实例包含以下值:

  • instanceId=172.20.39.197:foo服务:8763
  • 非安全报告=8080
奇怪的是非安全报告设置为8080而不是8763。在我的其他服务(正常工作)中,非安全报告的值与实例ID的最后一部分相同。只有在foo服务中,值是不同的

原因是:

@Value("${server.port:${SERVER_PORT:${PORT:8080}}}")
int nonSecurePort;
找不到配置并返回默认值。但是为什么呢? 我已经检查了maven创建的foo.jar,bootstrap.yml在正确的位置(BOOT-INF/classes/bootstrap.yml)上有正确的值


有人知道可能出了什么问题吗?

原因如下:

应用程序仍然通过xml加载了一些旧属性:

@Configuration
@ImportResource("some-xml-file") // which loads properties
class FooConfig {}
xml文件加载的属性没有定义任何端口,因此可以肯定,这不是覆盖的情况。然而,它似乎足以以某种方式干扰弹簧靴

小规模重构后:

@Configuration
@PropertySource("properties-file") // loading properties without xml
class FooConfig {}

都开始工作了。

我也有同样的问题

几个引导应用程序的构建方式完全相同。使用@ImportResource的应用程序使用错误的默认端口8080注册到Eureka

我还不能离开@ImportResource

将以下内容添加到bootstrap.yml有效

eureka:
  instance:
    non-secure-port: 8088

你能提供一个重现问题的样本吗?我试图创建,但所有简单的样本都适合我。只有这个单一而复杂的应用程序不起作用。当我设法获得更多信息时,请立即在此处共享。但是谢谢你!