2014-11-06 173 views
6

我試圖創建一個Spring Cloud配置服務器,它從屬性文件中讀取配置數據而不是github。服務器啓動,但不提供文件中的屬性。我對classpapath兩個配置文件:Spring-Cloud配置服務器忽略配置屬性文件

bootstrap.yml

spring: 
application: 
    name: config-server 

config-server.properties

foo=bar 

當我去據稱應該給我的值的URL foo樓盤:

curl http://localhost:8888/admin/env/foo 

我得到一個錯誤: 「時間戳「:1415298615005,」status「:404,」error「:」Not Found「,」exception「:」org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint $ NoSuchPropertyException「,」message「:」No such property :foo「,」path「:」/ admin/env/foo「}

我在想我在做什麼錯?據我瞭解,屬性文件名應該與服務器名稱匹配以便被服務器識別。


作爲spencergibb添加本機配置文件建議沒有幫助。我application.properties樣子:

server.port=8888 
spring.profiles.active=native 
spring.config.name=configserver 
spring.application.name=configserver 

注意,我必須指定服務器端口。根據Spring Cloud Config Server文檔,配置服務器默認啓動端口8888。在我來說,不過除非我指定我的配置在服務器啓動的端口在8080

的POM文件沒有父母和一個單一的依賴性:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-config-server</artifactId> 
     <version>1.0.0.M2</version> 
    </dependency> 
</dependencies> 

應用程序有沒有什麼特別的吧:

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
@EnableConfigServer 
public class ConfigurationApp { 
    public static void main(String[] args) { 
     SpringApplication.run(ConfigurationApp.class, args); 
    } 
} 

的configserver.properties文件包含一個條目:富=酒吧

首先我總是得到一個啓動錯誤

2014-11-07 09:35:42.852 ERROR 6972 --- [   main] b.c.PropertySourceBootstrapConfiguration : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/configserver/default/master":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect 

不管哪個命令我執行我總是從服務器獲取的相同的響應的:

{"name":"info","label":"master","propertySources":[{"name":"bootstrap","source":{}},{"name":"applicationConfig: [classpath:/application.properties]","source":{"spring.config.name":"configserver","spring.application.name":"configserver","server.port":"8888","spring.profiles.active":"native"}},{"name":"defaultProperties","source":{"spring.application.name":"bootstrap"}}]} 

我嘗試:

http://localhost:8888/configserver/env 
http://localhost:8888/configserver/env/foo 
http://localhost:8888/configserver/info 
http://localhost:8888/configserver/beans 
http://localhost:8888/configserver/health 

的響應總是如上

回答

5

默認情況下,配置服務器從git提供屬性。您需要使用--spring.profiles.active=native將配置文件設置爲native,以使配置服務器可用於彈簧環境。配置服務器的spring.config.name以編程方式設置爲spring.config.name=configserver,因此您的屬性文件將需要爲configserver.properties。

+0

我將您建議的設置添加到application.properties。錯誤消失了,但我仍然無法獲得我的物業。我更新了我的原始帖子,更多信息 – MrkK 2014-11-07 15:14:53

+0

在此處查看我的答案:http://stackoverflow.com/a/27159030/2730527 – spencergibb 2014-11-26 21:18:59

1

配置服務器中的「/ admin/env」端點只服務於服務器本身的本地配置。服務器通常只是一個普通的Spring Boot應用程序,所以它從「application.properties」中獲取它的配置。如果你想從「config-server.properties」中選擇它,你需要設置「spring.config.name」或者「spring.config.location」(就像一個普通的啓動應用程序一樣)。