У меня есть приложение весенней загрузки, использующее spring-data-mongodb.Со следующей конфигурацией MongoDB в application.properties
, mongoRepository считывает / записывает документы в правильную базу данных: product_db
.Пока все правильно.
#MongoDB Config
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=product_db
spring.data.mongodb.username=demo
spring.data.mongodb.password=demo
spring.data.mongodb.database=product_db
Затем я ввел spring-cloud-config и переместил точно такую же конфигурацию MongoDB в my-service.properties
, чтобы клиент конфигурации мог получить их с сервера конфигурации.Странно то, что теперь mongoRepository читает / записывает документ из / в базу данных: test
Где spring-cloud-config-server определяет имя базы данных?Как настроить, чтобы попросить mongoRepository использовать правильную базу данных?
Фрагмент кода, следующий за сервером конфигурации
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class ConfigServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServiceApplication.class, args);
}
}
application.properties для сервера конфигурации
server.port=2000
spring.application.name=config-server
eureka.client.service-url.defaultZone=http://localhost:8260/eureka
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=file:///${user.home}/Project/configuration
my-test.properties
server.port=2100
spring.application.name=service-sample
eureka.client.service-url.defaultZone=http://localhost:8260/eureka
logging.level.org.springframework=INFO
#MongoDB Config
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=product_db
spring.data.mongodb.username=demo
spring.data.mongodb.password=demo
spring.data.mongodb.database=product_db
Для my-service в качестве клиента конфигурации:
@EnableDiscoveryClient
@SpringBootApplication
@EnableMongoRepositories(basePackages = "com.mydemo.service.sample.repositories")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
bootstrap.properties для клиента конфигурации:
server.port=2100
spring.application.name=my-service
eureka.client.service-url.defaultZone=http://localhost:8260/eureka
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
Как упоминалось ранее, если я удалю bootstrap.properties и использую следующеефайл application.properties для my-service, все хорошо.
server.port=2100
spring.application.name=service-sample
eureka.client.service-url.defaultZone=http://localhost:8260/eureka
logging.level.org.springframework=INFO
#MongoDB Config
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=product_db
spring.data.mongodb.username=demo
spring.data.mongodb.password=demo
spring.data.mongodb.database=product_db