这是情况。我有2个项目。
有一个ConfigurationA类定义一个Bean,如下所示:
public @Bean MongoDatabase getMongoDatabase() {
MongoClient client = new MongoClient();
return client.getDatabase("mydb");
}
进口项目A
<dependency>
<groupId>com.project</groupId>
<artifactId>project-a</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
具有导入ConfigurationA的ConfigurationB类
当我尝试运行项目B时,我收到以下错误:
java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer due to internal class not found. This can happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)
...
Caused by: java.lang.NoClassDefFoundError: com/mongodb/client/MongoDatabase
如果我为Mongo-java-driver为Project B添加一个显式导入,它可以正常工作。
我的问题是:为什么我需要在项目B中导入?有什么办法可以防止这种情况发生吗?我不希望Project B知道项目A中的依赖项。