application.properties中的空值导致"无法解析占位符"例外

时间:2016-10-10 15:48:10

标签: java spring spring-boot configuration server

我们有一个spring-boot应用程序,它从配置服务器读取它的配置。

我在使用spring-cloud-configuration-server读取空属性时遇到了问题。

设置是一个KV对,在application.properties中没有值。 例如 的myKey =

加载它"常规"只使用一个文件没有问题。

但是当客户端使用配置服务器时,空值将导致:

  

" java.lang.IllegalArgumentException:无法解析占位符' MyKey'"。

在配置服务器中找我奇怪。 所以这是它的application.yml:

info:
  version: '@project.version@'
  artifact: '@project.artifactId@'
server:
  port: 10805
spring:
  application:
    name: ${info.artifact}
  http:
    encoding:
      charset: UTF-8
  boot:
    admin:
      discovery:
        enabled:  true
      context-path: /admin
  jmx:
    enabled: false
endpoints:
  jmx:
    enabled: false
turbine:
  combineHostPort: true
  app-config: service.us
  clusterNameExpression: "'default'"

---
spring:
  profiles: win
eureka:
  server:
    disable-delta: true
    disable-delta-for-remote-regions: true
  instance:
    hostname: ${COMPUTERNAME}
  client:
    serviceUrl:
      defaultZone: http://localhost:10805/eureka/
archaius:
  deployment:
    datacenter: ${eureka.instance.hostname}
    environment: local

---
spring:
  profiles: default
eureka:
  instance:
    virtual-host-name: ${eureka.instance.appname}
    app-group-name: ces
    appname: admin.ces

---
spring:
  profiles:
    active: subversion
  cloud:
    config:
      server:
        svn:
          uri : https://myserver/svn/ces/trunk/config/
          username: conf
          password: ****

任何想法?

1 个答案:

答案 0 :(得分:1)

我终于找到了问题。

配置服务器也可以驱动eureka服务器。 这种组合导致上述行为。

删除注释和依赖项

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

解决了这个问题。

因此,我们在同一个实例上运行这两种服务的想法目前无法实现。

二手版本:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.RS4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>