当前位置: 首页 > 知识库问答 >
问题:

Spring云配置不获取配置文件

乐正洲
2023-03-14

我刚刚将我们的Spring Boot项目从引导升级到v2.6.2,从Spring Cloud升级到2021.0.0。

现在,我的远程配置获取没有任何效果,应用程序也无法获取正确的属性文件

[main]INFO o. s. c. c. c. ConfigServiceProperty tySourceLocator-从服务器获取配置:http://localhost:8080

[main]WARN o. s. c. c. c.配置服务属性源定位器-无法定位属性源:无法提取响应:没有为响应类型[类org.springframework.cloud.config.environment.环境]和内容类型找到合适的HttpMessageConverter[text/html; charset=UTF-8]

[main]INFOeu.hermes.esb.cloud.应用程序-没有活动配置文件集,返回到默认配置文件:默认

[主]信息o.s.b.c.config。ConfigDataLoader-正在从以下位置的服务器获取配置:http://localhost:8080

[主]信息o.s.d.r.c.RepositoryConfigurationDelegate-在默认模式下引导Spring数据JPA存储库**

我们使用基于git repo的spring云配置,git repo中填充了以下结构中的配置yml文件。

  • app-one-dev.yml
  • app-one-prod.yml
  • app-two-dev.yml
  • app-two-prod.yml等

我尝试按照一些答案的建议将这两个依赖项添加到客户端服务中,但没有任何效果。

  1. spring cloud starter配置

这是我的配置服务yml

spring.cloud.config.server:
    git:
      uri: https://bitbucket-prod.doa.otc.hlg.de/scm/inp-cloud/esb-spring-boot-config.git
      username: foo
      password: bar
      force-pull: true
 spring.security:
 basic:
   enabled: true
 user:
   name: inp
   password: hermes

我的应用程序运行时具有以下属性:

-Dspring.config.import=configserver:http://inp:hermes@localhost:8080
-Dspring.cloud.config.name=esb-config-service
-Dspring.cloud.config.username=foo
-Dspring.cloud.config.username=bar
-Dspring.application.name=app-one
-Dspring.profiles.active=dev,console,gelf

我们的服务在OKD的Kubernetes上运行。但我在windows计算机上本地复制了相同的情况,因此我认为这不是特定于环境的。

共有1个答案

夏元明
2023-03-14

问题很可能是客户端配置中的凭据错误,即用户名和密码。

根据提供的信息,很难确定。特别是,问题中给出的凭据可能是匿名的。但请注意,在给定的配置代码段中,您设置了两次用户名,而不是密码。此外,服务器配置的代码段没有正确缩进。客户端的属性可能应该包含

-Dspring.config.import=configserver:http://localhost:8080
-Dspring.cloud.config.username=inp
-Dspring.cloud.config.username=hermes

Spring Boot对Spring Security的自动配置与Spring云配置服务器并不完全匹配。问题是,当配置客户端的默认Accept标头使用错误凭据发送时,服务器会转发到登录页面。这就是为什么配置客户机接收到媒体类型为HTML的响应正文,而客户机不理解。

请仔细检查配置中的凭据。防止将来出现此问题的最直接方法是禁用配置服务器中的登录页面,如果您不需要它。然后您会在客户端中收到一条明确的日志消息以查找不良凭据。

 类似资料:
  • 我在spring cloud configuration 2020.0.3和spring boot 2.4.5中遇到了一个问题,详情如下: Yaml配置文件遵循多配置文件Yaml文档 我在配置服务器上有一个配置yaml文件 my\u cofig。亚马尔 我已经通过浏览器从配置服务器加载了配置,这是正确的。但是: 独自创立亚马尔 错误详细信息: 请帮帮我,非常感谢!

  • 我正在使用spring云配置服务器 在我的一个应用程序中,我得到了一个存储在资源文件夹中的密钥存储: 我想得到密钥库。来自repo的jks,其中包含所有常规属性,如application。属性等。我的问题是: 1。我可以存储吗。git repo上的jks文件并将其提供给我的服务 2。如何确保该文件只转到相应的服务? 谢谢

  • 我有一个从Spring Cloud config server(纯模式)获取配置的Spring Boot应用程序。配置服务器加载的配置位置中的基本application.yml文件包含以下内容: 当到达配置服务器(http://mygateway/config-server/myapp/test)的endpoint时,我会返回在配置文件“test”中运行的“myapp”应用程序的以下内容: 在测试

  • 问题内容: 在我的application.yml中,我得到了: 还有其他一些使用不同的配置文件。启动应用程序时,我得到以下信息: 如果我只是将log4j2.xml放在已分析的文件旁边,则它可以工作。所以我认为这是我错过依赖关系的原因,或者使用log4j2无法实现? 问题答案: 在我这边,我正在使用属性文件而不是Yaml文件。我需要两个日志文件:一个将所有内容记录到控制台,另一个用于记录文件。因此,

  • 我不确定我是否很好地理解了Spring概要文件是如何处理yaml和属性文件的。我试图将这两种类型的配置分开(这两个文件不共享任何配置),但在从yaml配置中读取配置文件时遇到了问题。 我的问题是,当我试图(通过xml)配置我的数据源时,这样做: Spring总是使用YAML文件中的最后一个配置,忽略概要文件。我试图通过web.xml中的contex-parameter或直接将活动概要文件传递给JV

  • 目录: 在配置项目yml文件中: 问题: null 客户端YML: 有没有人知道我怎样才能在这两种情况下只带一个配置文件?