Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot/Application.java如何在另一个包中获取Mongo AbstractMongoConfiguration?_Java_Spring_Mongodb_Spring Boot - Fatal编程技术网

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

Spring boot/Application.java如何在另一个包中获取Mongo AbstractMongoConfiguration?,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,我想把我的课程组织成包。使用以下示例: 我在“my.main.package”中有Application.java 我在下面定义了我自己的AbstractMongoConfiguration实现: import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongo

我想把我的课程组织成包。使用以下示例:

我在“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”?有没有一种合适的方法或可能性可以做到这一点,而不将它们都放在同一个包中?

将主Spring Boot应用程序类放在根包中,而不是放在其他类之上,这样基本的“搜索包”就是根包。将扫描根目录中的所有包以查找配置类

如果您选择在其他包中放置一些其他配置类,我认为需要指定这些类。例如,如果您的主应用程序类位于包“demo”中,而Mongo配置类位于包“other.demo”中,则主应用程序类的
@ComponentScan
注释需要如下所示:

@Configuration
@ComponentScan(basePackages={"another.demo", "demo"})
@EnableAutoConfiguration
public class Application {
主Spring引导应用程序类位于根包中,位于其他类之上,因此基本“搜索包”是根包。将扫描根目录中的所有包以查找配置类

如果您选择在其他包中放置一些其他配置类,我认为需要指定这些类。例如,如果您的主应用程序类位于包“demo”中,而Mongo配置类位于包“other.demo”中,则主应用程序类的
@ComponentScan
注释需要如下所示:

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

我目前在包“demo.main”中有Application.java,在我的帖子“demo.main.config”中有配置。(这两个包在src/main/java下彼此对等。看起来我遇到了以下错误:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalStateException:此Mongo已关闭。当配置文件位于同一个包中时,不会发生这种情况。是否存在我必须添加一些其他注释或我必须做的事情?不,这应该足够了。Application.java的代码是什么?您使用什么代码访问Mongo,这会引发异常?Application.java没有bean或任何与MyMongoConfig相关的行。它是用配置、ComponentScan EnableAutoConfiguration进行注释的。我尝试了CoComponentScan(basePackages={“demo.main”,“demo.config”}(我将MyMongoConfig移动到demo.config)。用于访问的代码是一个“UserRepository.java”类,它扩展了MongoRepository,并且与Application.java(demo.main)位于同一个包中。你能分享你提到的代码吗?我已经测试了我能想象到的最简单的场景,并基于此提出了建议。如果你能分享到目前为止不起作用的内容,那么我就可以测试它,如果我能复制它,可能会提出其他建议。因此,你提供的细节/代码越多,就越快我目前在包“demo.main”中有Application.java,在我的帖子“demo.main.config”中有配置。(这两个包在src/main/java下彼此对等。看起来我遇到了以下错误:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalStateException:此Mongo已关闭。当配置文件位于同一个包中时,不会发生这种情况。是否存在我必须添加一些其他注释或我必须做的事情?不,这应该足够了。Application.java的代码是什么?您使用什么代码访问Mongo,这会引发异常?Application.java没有bean或任何与MyMongoConfig相关的行。它是用配置、ComponentScan EnableAutoConfiguration进行注释的。我尝试了CoComponentScan(basePackages={“demo.main”,“demo.config”}(我将MyMongoConfig移动到demo.config)。用于访问的代码是一个“UserRepository.java”类,它扩展了MongoRepository,并且与Application.java(demo.main)位于同一个包中。你能分享你提到的代码吗?我已经测试了我能想象到的最简单的场景,并基于此提出了建议。如果你能分享到目前为止不起作用的内容,那么我就可以测试它,如果我能复制它,可能会提出其他建议。因此,你提供的细节/代码越多,就越快调查