我使用以下依赖项和属性创建了云配置服务器的实例:
<properties>
<java.version>17</java.version>
<spring-cloud.version>2023.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path -->
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
我启用配置服务器:
@SpringBootApplication
@EnableConfigServer
public class CloudConfigServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigServiceApplication.class, args);
}
}
到目前为止一切顺利。现在我也在application.properties中传递了几个配置:
server.port=8888
spring.application.name=cloud-config-service
# https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html#_git_ssh_configuration_using_properties
spring.profiles.active=git
[email protected]
spring.cloud.config.server.git.password=ghp_tokenGenerated
spring.cloud.config.server.git.uri=https://github.com/me/spring-cloud-remote-configs.git
spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.server.git.default-label=master
spring.cloud.config.server.git.basedir=applicationName
logging.pattern.file=%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger.%M - %msg%n
logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %green([%thread]) %highlight(%level) %logger - %msg%n
logging.file.name=webapps-logs/cloud-config-service.log
logging.logback.rollingpolicy.max-history=5
logging.logback.rollingpolicy.max-file-size=1250MB
logging.level.root=INFO
logging.level.fr.dsidiff=INFO
logging.level.org.springframework=INFO
management.endpoints.web.exposure.include=*
management.endpoint.health.enabled=true
management.endpoint.health.show-details=always
实际上,文件被克隆到applicationName/applicationName的同一个文件夹中 当应用程序启动时,我注意到一条警告消息:
WARN org.springframework.cloud.config.server.environment.EnvironmentController - Error getting the Environment with name=dsipilot profiles=discovery-service label=default includeOrigin=false
org.springframework.cloud.config.server.environment.NoSuchLabelException:没有这样的标签:默认
第二步是在其他微服务中使用配置。这是我使用配置的 Web 服务的 application.yml:
server:
port: ${PORT:0}
forward-headers-strategy: framework
spring:
application:
name: users-service
cloud:
config:
enabled: true
name: ${spring.application.name}
rabbitmq:
host: localhost
username: guest
password: guest
port: 5672
config:
import: "optional:configserver:${CONFIG_SERVER:http://localhost:8888}"
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/users?autoReconnect=true&useSSL=false&createDatabaseIfNotExist=true
jpa:
properties:
hibernate:
column_ordering_strategy: legacy
hibernate:
ddl-auto: update
show-sql: 'true'
database-platform: org.hibernate.dialect.MySQLDialect
devtools:
restart:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_SERVER:http://localhost:8761/eureka}
instance:
preferIpAddress: true
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
logging:
pattern:
level: "%5p [${spring.application.name}, %X{traceId:-}, %X{spanId:-}]"
dateformat: yyyy-MM-dd HH:mm:ss
file:
name: webapps-logs/users-service.log
logback:
rollingpolicy:
max-history: '5'
max-file-size: 250MB
level:
root: WARN
fr.webservices: INFO
org.springframework: INFO
org.hibernate: INFO
management:
endpoints:
web:
exposure:
#include: openapi, swagger-ui, busrefresh
include: '*'
endpoint:
health:
enabled: true
show-details: always
tracing:
sampling:
probability: 1
zipkin:
tracing:
endpoint: http://localhost:9411/api/v2/spans
users-ws:
message: "message from Localhost"
我的网络服务包含以下依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
出于测试目的,我添加了以下控制器方法:
@GetMapping
public String status() {
String status = "Users service > Working on port " +
env.getProperty("local.server.port") +
"Current message: \r\n " + env.getProperty("users-ws.message");
log.info(status);
return status;
}
在 git 存储库中,我在 github 上的 applicationName 目录中有一个 users-service.yml 文件。
此文件包含不同的消息:
users-ws:
message: "message from Github"
我的问题如下:
我只是更换
spring.cloud.config.server.git.basedir=applicationName
与
spring.cloud.config.server.git.search-paths=applicationName
我只是在设置属性时没有注意。