首页 > 解决方案 > Spring Config 服务器 - 无法获取属性

问题描述

我无法从另一个 spring 应用程序的spring 配置服务器中获取属性。

我可以使用浏览器获取它,因此配置服务器本身似乎很好,但是我的客户端应用程序似乎只是忽略了我应该在哪里获取属性的配置。

配置服务器很简单:

@SpringBootApplication
@EnableConfigServer
public class ConfigserverApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigserverApplication.class, args);
    }
}

和 application.properties

server.port=8888
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=${HOME}/FH/SKS/configserver/src/main/resources/configuration
management.security.enabled=false

我现在不想使用任何 git,所以我只使用一个名为的本地文件

新闻服务-config.properties:

message=Hello configuration server !

我可以使用浏览器很好地获取属性:

在此处输入图像描述

..所以我猜它在我的其他配置中!

客户_

首先,我使用 application.yml 进行一般配置,如下所示:

server:
  port : 8081

spring:
  jpa:
    generate-ddl: true
    hibernate:
      ddl-auto: create
    show-sql: true
    databasePlatform: org.hibernate.dialect.MySQL5Dialect

关于配置服务器的内容不多。除了用于配置服务器配置的 application.yml 之外,我还创建了一个bootstrap.properties文件:

spring.application.name=newsservice-config
spring.cloud.config.server.uri=http://localhost:8888
management.security.enabled=false

名称正确。(配置服务器上配置文件的名称)服务器地址正确。

我要测试所有内容的 REST 控制器:

@RefreshScope
@RestController
@RequestMapping("/article")
@CrossOrigin
public class ArticleController {
    @Value("${message: Default Hello}")
    private String message;

    @GetMapping("/test")
    public String tester(){
        return this.message;
    }
}

..但是它没有从配置服务器获取任何东西....

在此处输入图像描述

我的客户的资源结构:

在此处输入图像描述

任何想法我做错了什么?

亲切的问候...

标签: javaspringspring-bootcloudspring-cloud-config-server

解决方案


似乎它与配置客户端实现的版本有关。如果我在我的 pom.xml 文件中使用它,它会起作用

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

..但是较新的版本不起作用

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

我真的很困惑为什么会这样。我也认识到,根据实现,配置服务器似乎能够通过浏览器处理配置的正常请求......

行为和兼容性似乎也取决于 pom.xml 的这一部分

<properties>
        <java.version>15</java.version>
        <spring-cloud.version>2020.0.0-RC1</spring-cloud.version>
    </properties>

或者

<properties>
        <java.version>15</java.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
    </properties>

有时,这两个选项之一是同时使用两个 Spring Boot 父版本......有时不是。

我的结论是,这非常令人困惑,我只需要在不问太多问题的情况下使用我猜想的任何作品.... :(


推荐阅读