Spring从另一个项目导入配置,瞬态依赖,ClassNotFound

时间:2016-01-23 19:58:03

标签: java spring maven

这是情况。我有2个项目。

项目A

  • 导入mongo-java-driver
  • 有一个ConfigurationA类定义一个Bean,如下所示:

    public @Bean MongoDatabase getMongoDatabase() {
        MongoClient client = new MongoClient();
        return client.getDatabase("mydb");
    }
    

项目B

  • 进口项目A

    <dependency>
        <groupId>com.project</groupId>
        <artifactId>project-a</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    
  • 具有导入ConfigurationA的ConfigurationB类

  • 是否已导入mongo-java-driver

当我尝试运行项目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中的依赖项。

0 个答案:

没有答案