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

spring-cloud-config-server使用svn作为存储库时的奇怪问题

梁丘柏
2023-03-14

在更改配置值和SVN提交之后,我将触发refresh POST调用,URL:http://localhost:8080/Actuator/refresh[8080是客户端端口]。SVN中更新的值没有被刷新。

众所周知,config-server在本地存储SVN数据。[在我的例子中,文件夹位置-/tmp/config-repo-5393789580706388886]这里奇怪的是,一旦触发了“refresh”REST调用,在本地更新SVN中提交的更改。但这只是应用程序没有得到它。

Spring boot Version-2.1.3.
Cloud Version-Greenwich Release。

配置-服务器详细信息:

Maven依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
spring:
  application:
    name: spring-cloud-config-server
  profiles:
    active: subversion
  cloud:
    config:
      server:
         svn:
           uri: https://svn.*****.com/repos/****/microservices
           username: #####
           password: #####
         default-label: source
server:
  port: 8888
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
spring:
  application:
    name: [client-app-name]
  cloud:
    config:
      uri: http://localhost:8888
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
  security:
   enabled: false
server:
  port: 8080

在启动config-client微服务时,可以看到它正在通过config-server从预期的SVN位置获取值。

c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
c.c.c.ConfigServicePropertySourceLocator : Located environment: name=[client-app-name], profiles=[default], label=null, version=10718, state=null
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='https://svn.*****.com/repos/****/microservices/source/[client-app-name].properties'}]}

在调用test REST调用从config客户机获取配置值时,我正在从SVN获取该值。

在文件中进行更改后,[client-app-name].properties并提交给SVN。在执行REST时调用http://localhost:8080/actuator/refresh,得到以下响应,这与预期的一样。

[]-bash-4.2$ curl -X POST http://localhost:9000/actuator/refresh
["config.client.version","configValue"]-bash-4.2$
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
c.c.c.ConfigServicePropertySourceLocator : Located environment: name=[client-app-name], profiles=[default], label=null, version=10718, state=null
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='https://svn.*****.com/repos/****/microservices/source/[client-app-name].properties'}]}

我实在找不出我所犯的错误。任何解决这一问题的输入都将非常有帮助。多谢.

共有1个答案

姬存
2023-03-14

您是否为组件设置了@refreshScope注释?

例如,TestProperties是具有ConfigValue的@ConfigurationProperites

@Bean
public TestComponent(TestProperties properties) {
    return new TestComponent(properties.getConfigValue());
}

如果像上面的例子一样使用原始configValue,则必须对其进行注释。

@Bean
public TestComponent(TestProperties properties) {
    return new TestComponent(properties);
}
 类似资料:
  • 我尝试使用后端存储库(文件系统)设置Spring Cloud配置服务器,但是endpoint(< code > http://localhost:8888/licensing service/default )返回以下内容: 主要: 应用程序: Licensingservice.yml: 服务配置的路径: 项目:https://github . com/JD avid-Araujo/sample-

  • 我正在开发一个应用程序,用户可以看到一组缩小的图像,然后按“确定”下载所有的原始文件,将它们放入压缩文件并发送压缩文件。 该应用程序使用聚合物,聚合火,火力(包括存储)。 在上传图像期间,我将原始文件和缩小后的文件的下载网址和存储参考都保存在数据库中。 当我将下载url放在iron image元素中以在浏览器中显示图像时,一切都很正常,缩小的图像显示在屏幕上。当我试图通过XMLHttpReques

  • pom.xml依赖项(spring-cloud-config-server): Git repo目录位置(我使用Windows):

  • 我刚接触spring cloud我的目标是将本地git repo(windows machine-->创建于文件夹z://spring_boot_cloud_microservices_udemy/projects/local-git-repo/)连接到spring cloud Server,但是当我输入相应的url(http://localhost:8888/limit-services/def

  • 我是Spring Boot的新手,所以如果我忽略了一些简单的东西,请原谅我。 使用Spring配置服务器,您可以指定via。yml文件您希望使用哪种类型的环境存储库(native、Git等)。这些环境存储库包含在第三方依赖项中。我想知道是否可以添加您自己的环境存储库,以便您可以连接到数据库以获取配置? 非常感谢!