我正在尝试为我的一个项目配置Spring Cloud Config。它以前曾经工作得很好。但是,在最新版本的Spring中,尝试启用身份验证时会遇到麻烦。这是我看到的日志。
INFO Fetching config from server at : http://localhost:8888
WARN Could not locate PropertySource: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]
INFO The following profiles are active: development
有人遇到这个问题吗?没有身份验证,spring-cloud-config-client可以很好地工作,但是启用基本身份验证后,相同的代码将无法正常工作。
Spring Cloud Config Server application.properties:
spring.application.name=my-config
server.port=8888
spring.cloud.config.server.git.uri=file:///repo/my-config
spring.security.user.name=root
spring.security.user.password=root
Spring Cloud Config Client Bootstrap.yml:
spring.application.name=my-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
management.endpoints.web.exposure.include=*
spring.cloud.config.username=root
spring.cloud.config.password=root
我的配置服务器和服务项目都对Spring Boot和Spring Cloud使用相同的version属性
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring-cloud-config.version>2.2.0.RELEASE</spring-cloud-config.version>
======其他信息======
我的服务项目以某种方式没有检测到我在bootstrap.properties中指定的spring.profiles.active = development配置。我尝试通过在代码中输出此配置来确认这一点。
@Value("${spring.profiles.active}")
private String activeProfile;
logger.info("Active Profile: " + activeProfile);
奇怪的是,记录器的输出为空白,这意味着没有活动的配置文件。因此很明显,此bootstrap.properties配置被忽略。为了绕过这个问题,我在我的服务启动中添加了这个JVM参数。
-Dspring.profiles.active=development -Dspring.application.name=my-service
这有效地解决了未检测到配置文件的问题。但是我仍然不清楚为什么bootstrap.properties中会忽略spring.profiles.active = development配置。
答案 0 :(得分:0)
您需要在“配置服务器”应用程序中提供native
配置文件,而将development
配置文件留给客户端。以下配置有效:
配置服务器
bootstrap.yml
server:
port: 9001
servlet.context-path: /my-config-server
spring:
application.name: my-config-server
profiles:
active: native
main:
banner-mode: "OFF"
cloud:
config:
uri: http://localhost:9001/my-config-server
fail-fast: true
username: root
password: root
application.yml:
spring:
profiles: native
cloud:
config:
server:
native:
searchLocations: file:<path-to-files>
git:
clone-on-start: false # Only clone(true) on-demand
配置客户端
bootstrap.yml
spring:
application.name: user-api
profiles:
active: development
main:
#banner-mode: "OFF"
cloud:
config:
uri: http://localhost:9001/my-config-server
fail-fast: true
username: root
password: root