У меня есть одно приложение весенней загрузки Java (назовите его служебной службой) и много других приложений весенней загрузки Java (назовите их как клиенты).
Оба (сервисная служба и клиенты) используют автоконфигурацию Spring. Когда я пытаюсь поместить JAR служебной службы в клиент, после сборки клиента он выдает ошибку на bootrun
. Ошибка:
Error creating bean with name 'mongoTemplate' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]:
Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.data.mongodb.MongoDbFactory]: :
Error creating bean with name 'mongoDbFactory' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]:
Unsatisfied dependency expressed through constructor argument with index 0 of type [com.mongodb.MongoClient]: :
Error creating bean with name 'mongo' defined in class path resource [org/springframework/boot/autoconfigure/mongo/MongoAutoConfiguration.class]:
Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [com.mongodb.MongoClient]:
Factory method 'mongo' threw exception;
nested exception is java.lang.NoSuchMethodError:
org.bson.io.BasicOutputBuffer.<init>(I)V;
Я могу решить эту проблему, применяя @EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
в клиентских Application.java
.
Но у меня много таких клиентов, и я не хочу изменятькод клиента (кроме его build.gradle
).
Есть ли какой-либо способ от служебной службы изменить и достичь выше?