作者:mobiledu2502937927 | 来源:互联网 | 2024-12-15 13:22
在使用 Spring Cloud Config 作为配置中心的过程中,如果遇到配置文件中指定的请求路径没有生效的情况,例如在 `application.yml` 中配置了如下内容:
```yaml
spring:
cloud:
config:
discovery:
enabled: true
service-id: config-server
name: user-service
profile: dev
uri: http://localhost:6001
```
但在日志中却显示配置是从 `http://localhost:8888` 获取的,如:
```
2020-01-07 10:21:37.305 INFO 4816 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2020-01-07 10:21:38.393 INFO 4816 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Connect Timeout Exception on Url - http://localhost:8888. Will be trying the next url if available
2020-01-07 10:21:38.394 WARN 4816 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/user-service/dev": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
```
这表明配置未生效。解决这一问题的方法之一是将配置文件名从 `application.yml` 修改为 `bootstrap.yml`。`bootstrap.yml` 的加载优先级高于 `application.yml`,因此能够确保配置正确加载。
此外,还需要检查以下几个方面来确保配置正确应用:
1. **服务发现配置**:如果使用了服务发现(如 Eureka),确保 `discovery.enabled` 设置为 `true`,并且 `service-id` 正确指向配置服务器。
2. **环境配置**:确保 `profile` 设置正确,与配置服务器上的配置文件相匹配。
3. **依赖项**:确保项目中包含了必要的 Spring Cloud Config 客户端依赖。
4. **网络配置**:检查本地网络配置,确保 `http://localhost:6001` 可以被访问。
通过上述步骤,通常可以解决配置路径未生效的问题。