我有一个Java Spring Boot应用程序(称为实用程序服务)和许多其他Java Spring Boot应用程序(称为客户端)。
(实用程序服务和客户端)都使用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
)。
有什么方法可以从公用事业服务中进行修改和实现吗?
答案 0 :(得分:0)
在任何客户端中包含依赖项时,都可以尝试排除该类。一旦排除了mongoTemplate配置类,在构建客户端服务代码时,它不应出现在您的类路径中。
希望这会有所帮助。