Search code examples
javaspring-mvcspring-bootspring-cloud-config

Spring Cloud Config server inside a Spring Boot app with MVC


I'm inserting a Spring Cloud Config server directly into my existing Spring Boot App, by adding the module dependency and @EnableConfigServer. Everything works as expected except I just realized that the config server URL mapping is hijacking some of my existing API endpoints due to they are sharing the same server.port

For example, I had an existing page at v1/docs/index.html, and this will be now mapped automatically to org.springframework.cloud.config.server.environment.EnvironmentController#labelled which has

    @RequestMapping("/{name}/{profiles}/{label:.*}")
    public Environment labelled(@PathVariable String name, @PathVariable String profiles,

Wondering is there anyway I can separate config server to a different port? Or add a special prefix to it to avoid URL mapping conflicts? Or given the current configurability it's just a bad idea to utilizing existing API servers as a config server?


Solution

  • Found the answer I need after reading the document more carefully:)

    https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_spring_cloud_config_server

    To change the location of the server endpoints you can (optionally) set spring.cloud.config.server.prefix, e.g. "/config", to serve the resources under a prefix. The prefix should start but not end with a "/". It is applied to the @RequestMappings in the Config Server (i.e. underneath the Spring Boot prefixes server.servletPath and server.contextPath).