Java 无法解析占位符';消息';“在价值上”${message}";

Java 无法解析占位符';消息';“在价值上”${message}";,java,spring,spring-cloud,spring-cloud-config,Java,Spring,Spring Cloud,Spring Cloud Config,我正在实现这个指南:关于SpringCloud配置 服务器: @EnableConfigServer @SpringBootApplication public class SpringCloudConfigExampleServiceApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudConfigExampleServiceApplication

我正在实现这个指南:关于SpringCloud配置

服务器:

@EnableConfigServer
@SpringBootApplication
public class SpringCloudConfigExampleServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudConfigExampleServiceApplication.class, args);
    }
}
服务器应用程序属性:

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/stavalfi/MySpringCloudConfigContentRepository.git
management.endpoints.web.exposure.include=*
server.port=8889
spring.application.name=a-bootiful-client
# N.B. this is the default:
spring.cloud.config.uri=http://localhost:8888
使用chrome进行测试时:(HTTP GET)

如您所见,我得到:
{“message”:“helloworld”}

客户:

@SpringBootApplication
public class SpringCloudConfigExampleClientApplication {
    @Value("${message}")
    private String message;

    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringCloudConfigExampleClientApplication.class, args);
        SpringCloudConfigExampleClientApplication bean = run.getBean(SpringCloudConfigExampleClientApplication.class);
        System.out.println(bean.message);
    }
}
客户端应用程序.properties:

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/stavalfi/MySpringCloudConfigContentRepository.git
management.endpoints.web.exposure.include=*
server.port=8889
spring.application.name=a-bootiful-client
# N.B. this is the default:
spring.cloud.config.uri=http://localhost:8888
客户端bootstrap.properties:

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/stavalfi/MySpringCloudConfigContentRepository.git
management.endpoints.web.exposure.include=*
server.port=8889
spring.application.name=a-bootiful-client
# N.B. this is the default:
spring.cloud.config.uri=http://localhost:8888
客户pom:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.M8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
项目的Github存储库:


我想你忘了演示的一部分

在新创建的a-bootiful-client.properties文件中添加一个简单的属性和值message=helloworld,然后git提交更改

可能当时还没有加载属性。您下面的示例略有不同

@SpringBootApplication
public class ConfigClientApplication {

  public static void main(String[] args) {
    SpringApplication.run(ConfigClientApplication.class, args);
  }
}

@RefreshScope
@RestController
class MessageRestController {

@Value("${message:Hello default}")
 private String message;

  @RequestMapping("/message")
  String getMessage() {
    return this.message;
  }
}

消息将在控制器中填充/刷新

您确定要使用spring framework的@Value annotation而不是任何其他库吗?好的观点:是的,我使用的是正确的:
import org.springframework.beans.factory.annotation.Value发布应用程序启动日志您可以提供一个复制问题的日志吗?在日志的最顶端,您应该看到配置客户端日志它正在从配置服务器使用什么属性文件,你能提供那些日志吗?我做到了:
https://github.com/stavalfi/MySpringCloudConfigContentRepository/blob/master/a-bootiful-client.properties
您是否添加了org.springframework.cloud:springcloudstarter配置依赖项?Spring似乎没有从配置服务器加载是的。我在问题中添加了客户端pom。我只是想当时还没有加载属性