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



我有一个基于Spring-boot的应用程序,该应用程序已部署到JAR。它具有Maven多模块项目的形式,并包含以下部分:

  • Web
  • 服务
  • 存储库
  • 模型

我的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并将其注册到尤里卡服务。由于某种原因,当我在以下情况下调试时:

org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration#eurekaInstanceConfigBean

eurekainstanceconfigbean的实例包含以下值:

  • 实例= 172.20.39.197:foo-service:8763
  • nonsecureport = 8080

什么很奇怪的是 nonsecureport 在8080上设置而不是8763。> instanceid 。仅在foo-service中,值是不同的。

原因是:

@Value("${server.port:${SERVER_PORT:${PORT:8080}}}")
int nonSecurePort;

找不到配置并返回默认值。但为什么?我已经检查了由Maven创建的foo.jar和bootstrap.yml在正确的位置(boot-inf/class/class/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 使用Eureka的8080的默认端口注册。

我还不能离开@Importresource。

将以下内容添加到bootstrap.yml工作。

eureka:
  instance:
    non-secure-port: 8088

最新更新