Quiero crear una aplicación de microservicios simple con el servidor de configuración de Spring Cloud. Estoy usando el repositorio de Github para almacenar mis archivos de configuración. Actualmente, tengo dos microservicios muy simples. Uno de ellos es un servidor de configuración en la nube que recupera propiedades del repositorio remoto en Github. En la clase principal de este microservicio, agregué la anotación @EnableConfigServer y proporcioné un par de propiedades en el archivo application.properties:
spring.application.name=cloud-config-server server.port=8888 spring.cloud.config.server.git.uri=*Remote repo URI* spring.cloud.config.server.git.username=*Username* spring.cloud.config.server.git.password=*Password* spring.cloud.config.server.git.clone-on-start=trueSi voy a http://localhost:8888/cloud-config-server/default todo funciona bien, mi servidor de configuración de Spring Cloud recupera las propiedades correctamente.
En mi segundo microservicio, agregué bootstrap.properties con 2 propiedades para conectarme al servidor de configuración de la nube:
spring.cloud.config.uri=http://localhost:8888 spring.cloud.config.name=cloud-config-serverY también agregué esta dependencia.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>Desafortunadamente, mi microservicio no recupera propiedades de cloud-config-server. Cuando trato de usar la propiedad a través de la anotación @Value, aparece un error:
Falló la inyección de dependencias conectadas automáticamente; La excepción anidada es java.lang.IllegalArgumentException: no se pudo resolver el marcador de posición 'test.text' en el valor "${test.text}
Estoy seguro de que no cometí un error tipográfico en el nombre de mi propiedad "test.text".
Ya he solucionado mi problema. El archivo Bootstrap.properties ya no está habilitado de forma predeterminada. Puede habilitarlo agregando una nueva dependencia:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>o alternativamente, puede eliminar el archivo bootstrap.properties y proporcionar estas propiedades en su archivo application.properties
spring.config.import=configserver:*URI to your cloud config server* spring.cloud.config.name=*Your cloud config server name*En Client application.properties, no debe usar el nombre del servidor, sino el nombre de la aplicación del cliente
spring.cloud.config.uri=http://localhost:8888 spring.cloud.config.name=applicationname<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>para la nube de primavera y
<version>2.5.0-SNAPSHOT</version>para bota de resorte.
También en el archivo application.properties:
spring.config.cloud.uri=htp://localhost:8888 spring.config.import=optional:configserver:htp://localhost:8888Estos deberían resolver su problema como lo hizo con el mío.