Solución:
Todo mi código está aquí https://github.com/spencergibb/communityanswers/tree/so27131143
src / main / java / Application.java
@Configuration
@EnableAutoConfiguration
@EnableConfigServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
src / main / resources / application.yml
spring:
application:
name: myconfigserver
profiles:
active: native
my:
property: myvalue
src / main / resources / myapp.yml
my:
otherprop: myotherval
Para obtener las propiedades de una aplicación denominada myapp
, Haz lo siguiente.
curl http://localhost:8080/myapp/default
{
"name": "default",
"label": "master",
"propertySources": [
{
"name": "applicationConfig: [classpath:/myapp.yml]",
"source": {
"my.otherprop": "myotherval"
}
},
{
"name": "applicationConfig: [classpath:/application.yml]",
"source": {
"spring.application.name": "myconfigserver",
"spring.profiles.active": "native",
"my.property": "myvalue"
}
}
]
}
Puedo leer la configuración para el servicio de Apple (Test Micro Service) usando el servidor de configuración Spring.
Ejemplo application.yml de la aplicación de configuración de primavera
spring:
profiles:
active: native
cloud:
config:
server:
native:
searchLocations: classpath:config/
server:
port: 8888
endpoints:
restart:
enabled: true
Coloque sus archivos .properties o .yml dentro de la carpeta src main resources config. Asegúrese de que el nombre de estos archivos coincida spring.application.name de su micro servicio.
Por ejemplo si spring.application.name = servicio de manzana entonces el archivo de propiedades debe ser apple-service.properties en src main resources config carpeta.
Ejemplo bootstrap.yml de servicio de manzana:
spring:
application:
name: apple-service
cloud:
config:
uri: http://localhost:8888
Usar spring.profiles.active = native es lo que parece sugerir la documentación de Spring, pero tampoco pude hacer que funcione. Mi archivo application.properties es
server.port=8888
spring.cloud.config.profiles=native
pero la respuesta de la URL
http://localhost:8888/config-server/env
es
{"name":"env","label":"master","propertySources":[{"name":"https://github.com/spring-cloud-samples/config-repo/application.yml","source":{"info.url":"https://github.com/spring-cloud-samples","info.description":"Spring Cloud Samples"}}]}
lo que indica que se ignoró el perfil nativo y que el servidor sigue considerando github como fuente de propiedad.
Un pequeño problema adicional que encontré es el puerto predeterminado del servicio de configuración. Según la documentación de Sprin Cloud Config, debería ser 8888. Si elimino server.port = 8888 de mi application.properties, el servidor de configuración se inicia en el puerto 8080, que es el puerto Spring Boot predeterminado, pero no el único que debería usar el servidor de configuración.