我希望将我的课程组织成包。使用以下示例:
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”?是否有正确的方法或可能性,而不是将它们推到同一个包装中?
答案 0 :(得分:4)
It is recommended表示主Spring Boot应用程序类位于其他类上面的根包中,以便基本"搜索包"成为根本者。将扫描根目录中的所有程序包以获取配置类。
如果您选择将其他配置类放在其他包中,我相信需要指定这些类。例如,如果您的主要应用程序类在包" demo"和您的Mongo配置类在包" another.demo"中,主应用程序类的@ComponentScan
注释需要如下所示:
@Configuration
@ComponentScan(basePackages={"another.demo", "demo"})
@EnableAutoConfiguration
public class Application {