source

spring.cloud.config.enabled를 통해 스프링 클라우드 구성을 해제할 수 없음: false

factcode 2023. 3. 10. 22:48
반응형

spring.cloud.config.enabled를 통해 스프링 클라우드 구성을 해제할 수 없음: false

먼저 Spring Cloud Config를 직접 사용하는 것이 아니라 Spring Cloud Hystrix Starter를 통해 변환됩니다.

사용만 할 경우@EnableHystrixSpring Cloud는 컨피규레이션서버도 찾고 있지만 사용하지 않기 때문에 정상적으로 찾을 수 없습니다.앱은 정상적으로 동작하고 있습니다만, 상태 확인에 문제가 있습니다.건강 프로그램DOWN설정 서버가 없기 때문입니다.

프로젝트의 출처를 탐색하는 것은spring.cloud.config.enabled=false이 기능 체인을 무효로 합니다만, 이것은 제가 보고 있는 것과는 다릅니다.

업그레이드 후1.0.0.RC1(이 속성을 추가합니다) 및@EnableCircuitBreaker:

{
    status: "DOWN",
    discovery: {
        status: "DOWN",
        discoveryClient: {
            status: "DOWN",
            error: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.cloud.client.discovery.DiscoveryClient] is defined"
        }
    },
    diskSpace: {
        status: "UP",
        free: 358479622144,
        threshold: 10485760
    },
    hystrix: {
        status: "UP"
    },
    configServer: {
        status: "DOWN",
        error: "org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http: //localhost: 8888/bootstrap/default/master":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect"
    }
}

configprops 엔드포인트를 체크한 결과 속성이 덮어쓰기된 것 같습니다.부모측에서는 configClient가 네이블로 되어 있는 것에 주의해 주세요.

parent: {
    configClientProperties: {
        prefix: "spring.cloud.config",
        properties: {
            password: null,
            discovery: {
                enabled: false,
                serviceId: "CONFIGSERVER"
            },
            name: "bootstrap",
            label: "master",
            env: "default",
            uri: "http://localhost:8888",
            enabled: true,
            failFast: false,
            username: null
        }
    }
},
configClientProperties: {
    prefix: "spring.cloud.config",
    properties: {
        password: null,
        discovery: {
            enabled: false,
            serviceId: "CONFIGSERVER"
        },
        name: "bootstrap",
        label: "master",
        env: "default",
        uri: "http://localhost:8888",
        enabled: false,
        failFast: false,
        username: null
    }
}

제가 제대로 하고 있지 않은 것 같다면 어떤 방향이라도 감사할 것입니다.

부트스트랩 중에 컨피규레이션서버가 필요하며 부모 속성 소스의 출처가 됩니다.당신이 해야 할 일이란 그저 당신이 해야 할 일처럼 보이는 것은spring.cloud.config.enabled속성을 bootstrap.yml(또는 .properties)로 지정합니다.

  • 부트스트랩 속성 또는 yml을 리소스 direcotry 또는 애플리케이션 디렉토리에 배치하고spring.cloud.config.enabled=false.OR
  • 환경변수를 추가하여 spring cloud config 서버 클라이언트를 디세블로 할 수 있습니다.SPRING_CLOUD_CONFIG_ENABLED=false또는
  • arg를 SpringApplication.run에 전달하면 어플리케이션에 파라미터를 추가하여 Config 서버 클라이언트를 비활성화할 수 있습니다.

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

    다음 방법으로 앱을 시작합니다.

    java -jar yourapplication.jar --spring.cloud.config.enabled=false

같은 문제가 있었습니다만, config server를 디세블로 하고 싶다고 생각하고 있습니다만(아직은 필요 없기 때문에), 상기의 속성은 적어도 RC1에는 적합하지 않습니다.

spring.cloud.enabled

다음 항목이어야 합니다.

spring.cloud.config.enabled

위의 모든 변경을 시도했지만 config client는 중단되지 않았습니다.

프로젝트의 pom.xml 파일에서 다음 제외를 사용하여 비활성화할 수 있었던 유일한 방법입니다.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

디스커버리 서비스의 폴로업(다른 투고는 없는 것 같음), 설정spring.cloud.config.discovery.enabled: falsebootstrap(yml/properties)로 설정되어 있는 경우, 및 이 파일을 삭제했을 경우에만,@EnableDiscoveryClient나의 주석Application클래스입니다. 이것은 검출이 사용되지 않는 서비스에는 해당 주석을 사용할 수 없다는 것을 의미합니다.

어느 것도 도움이 되지 않았습니다.통합 테스트를 위해 서버에서 스프링 클라우드 클라이언트 부트스트랩을 비활성화해야 했기 때문에 같은 문제에 직면한 사람은 누구나 도움이 되는 것을 사용할 수 있습니다.

@ComponentScan(excludeFilters = {
    @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = PropertySourceBootstrapConfiguration.class),
})
public class TestApplication {

}

테스트에 주석을 다는 방법은 다음과 같습니다.

@SpringBootTest(classes = TestApplication.class)
class SomeIntegrationTest {}

언급URL : https://stackoverflow.com/questions/27569168/cannot-disable-spring-cloud-config-via-spring-cloud-config-enabledfalse

반응형