2016-09-18 3 views
2

은 스프링 부팅 응용 프로그램/I 응용 프로그램을 시작할 때 server.port 및 management.port 아래는

spring.application.name=test-service 
server.port=8080 

management.port=8081 
management.context-path=/admin 

spring.cloud.config.uri=http://localhost:8888 
endpoints.refresh.enabled=true 
endpoints.restart.enabled=true 

의 application.properties입니다 다른 스프링 클라우드 클라이언트와 함께 작동하도록 새로 고침 config-server에 접속하여 예상대로 속성을로드합니다.

내가 설정 서버의 속성을 수정하고

curl -X POST http://localhost:8081/admin/refresh 

API를 인쇄 변경된 프로퍼티의 이름을 사용하여 응용 프로그램에 새로 고침을 트리거합니다. 나는 재산에 GET을 수행 할 때

, 나는 아직도 내가 다시 시작을 트리거하고 같은 동작을 참조하십시오 새로운 속성 값

curl -X POST http://localhost:8081/admin/restart 

을 집어 이전 값

curl -X GET http://localhost:8081/admin/env/{property_name} 

참조 속성 값을 변경하려고 할 때

curl -X POST http://localhost:8081/admin/env -d property1=123 

속성 값을 얻으려고 할 때 여전히 o ld 값

curl -X GET http://localhost:8081/admin/env/property1 

management.port를 8080 (server.port와 동일)으로 변경하면 모든 것이 예상대로 작동합니다.

이 동작이 필요합니까? 8080에서 실행중인 서버와 8081에서 실행중인 다른 환경을 수정하는 것으로 보입니다.

답변

0

pom.xml 및 응용 프로그램 기본 (Entry) 파일을 공유 할 수 있습니까? 포트. "/ refresh"호출에서 변경된 속성을 가져올 수 있다면 응용 프로그램에서도 작동해야합니다. 빈에서 @RefreshScope를 사용하고 있습니까?

참고 : @RefreshScope는 @Configuration 주석에 작동하지 않습니다. 자세한 내용은 https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html 문서를 따르십시오.

0

스프링 부트와 관련된 문제인 것으로 보입니다.

server.port와 management.port가 다른 경우 EnvironmentEndpoint 및 EnvironmentMVCEndpoint에 2 개의 다른 환경이 삽입됩니다.

응용 프로그램 환경은 업데이트 된 값을 가지고 있지만 특정 속성 값을 얻을 때 그것의 환경에서 올바른 가치를 반영하지 않는 EnviromentMVCEndpoint

@GetMapping(value = "/{name:.*}", produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
@HypermediaDisabled 
public Object value(@PathVariable String name) { 
    if (!getDelegate().isEnabled()) { 
     // Shouldn't happen - MVC endpoint shouldn't be registered when delegate's 
     // disabled 
     return getDisabledResponse(); 
    } 
    return new NamePatternEnvironmentFilter(this.environment).getResults(name); 
} 

@Override 
public void setEnvironment(Environment environment) { 
    this.environment = environment; 
}