Spring boot / Application.java如何在另一个包中获取Mongo AbstractMongoConfiguration?

时间:2014-04-22 04:01:37

标签: java spring mongodb spring-boot

我希望将我的课程组织成包。使用以下示例:

https://spring.io/guides/gs/accessing-data-mongodb/

我在“my.main.package”中有Application.java 我在下面定义了我自己的AbstractMongoConfiguration实现:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;

import com.mongodb.Mongo;
import com.mongodb.MongoClient;

@Configuration
public class MyMongoConfig extends AbstractMongoConfiguration{
    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient("remotehost:27018");
    }

    @Override
    protected String getDatabaseName() {
        return "mydb";
    }
}

如果我将该类放在与Application.java相同的包中,那么它可以工作。如果我将MyMongoConfig放在它自己的包中,即“my.config.package.settings”,那么运行Application.java似乎使用默认的MongoDB连接设置而不使用“MyMongoConfig”。为什么我的应用程序在不同的包中不会自动找到“MyMongoConfig”?是否有正确的方法或可能性,而不是将它们推到同一个包装中?

1 个答案:

答案 0 :(得分:4)

It is recommended表示主Spring Boot应用程序类位于其他类上面的根包中,以便基本"搜索包"成为根本者。将扫描根目录中的所有程序包以获取配置类。

如果您选择将其他配置类放在其他包中,我相信需要指定这些类。例如,如果您的主要应用程序类在包" demo"和您的Mongo配置类在包" another.demo"中,主应用程序类的@ComponentScan注释需要如下所示:

@Configuration
@ComponentScan(basePackages={"another.demo", "demo"})
@EnableAutoConfiguration
public class Application {