当前位置: 首页 > 知识库问答 >
问题:

Spring MongoRepository,在哪里捕获异常?

江琦
2023-03-14

我有一个Spring项目和一个MongoRepository。MongoRepository是一个扩展MongoRepository的接口,就像JPA一样。

Exception={com.mongoDB.mongoSocketOpenException:打开套接字异常},由{java.net.connectException:连接被拒绝:connect}引起

有办法捕捉异常吗?我无法在调用我的存储库的服务上捕获它,因为那些方法没有被执行。我认为这与@autowire有关,但我想不出如何捕捉异常。

体系结构:

application
  - resource (api)
  - service
  - repository extends MongoRepository
public interface MetingRepository extends MongoRepository<Meting, String> {
    Page<Meting> findAllByRuimteId(String ruimteId, Pageable page);
}

服务:

@Service("metingenService")
public class MetingServiceImpl implements MetingService {

  // could I try-catch this?
  @Autowired
  private MetingRepository metingRepository;

    @Override
    public Meting addMeting(Meting meting) {
      // try-catch does not solve the issue here
      return metingRepository.save(meting);
    }
  }
}

我唯一的测试,自动生成:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MetingenServiceApplicationTests {

    @Test
    public void contextLoads() {

    }

}

堆栈跟踪:

unsatisfiedDependencyException:创建名为“meting resource”的bean时出错:通过字段“meting service”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“metingen service”的bean时出错:通过字段“meting repository”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“meting repository”的bean时出错:设置bean属性“mongo operations”时无法解析对bean“mongo template”的引用;嵌套异常为org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autocconfigure/data/mongo/mongoDataautocconfiguration.class]中定义的名为“mongo template”的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstantiationException:无法实例化[org.springframework.data.MongoDB.core.MongoTemplate]:工厂方法“mongo template”引发异常;嵌套异常为org.springframework.dao.DataAccessResourceFailureException:等待与WritableServerSelector匹配的服务器时在30000 ms后超时。群集状态的客户端视图为{type=unknown,Servers=[{address=localhost:27017,type=unknown,state=connecting,Exception={com.MongoDB.MongoSocketOpenException:异常打开套接字},由{java.net.connectException:Connection Rejected:connect}}]引起;嵌套异常为com.MongoDB.MongoSocketOpenException:等待与WritableServerSelector匹配的服务器时在30000 ms后超时。群集状态的客户端视图为{type=unknown,Servers=[{

共有1个答案

谷梁玺
2023-03-14

您的单元测试正在尝试加载完整的Spring上下文。因此,它试图加载一个有效的MongoTemplate来连接到MongoDB实例。

在大多数情况下,您不应该使用@springboottests(用于集成测试),而是可以进行普通的JUnit测试

@RunWith(JUnit4.class) // or @RunWith(MockitoJUnitRunner.class)
public class MetingenServiceApplicationTests {
    ...
}
 类似资料:
  • 我正在处理Perl 6的控制异常。警告会引发正常异常控制流不可见的控制异常,该异常会自行恢复。那有点酷。 所以,我写了这个来看看会发生什么。除了了解Perl 6的实际功能外,我不想解决特定的问题: 它看起来像两个火: 注意,有一种莫阿恐慌,我已经提出了一个问题。但是,我并不是真的在问这个问题。 我对这里的水流图很好奇。我希望sub中的能够捕获异常并恢复,这样它就不会渗透到。这应该如何进行? 另外,

  • 问题内容: 我试图理解Java中捕获变量的概念。 我发现了有关它的详细文章:http : //www.devcodenote.com/2015/04/variable-capture-in- java.html 我不确定字节码部分: 类似地,为了访问封闭方法的局部变量,将创建变量的隐藏副本,并将其保留在内部类 文件 中,该 文件 从该变量访问该变量。 当最终原始值在编译时未知时,如何将其保存到类文

  • export class SearchService { ... .map((response) => response.json()) .catch((e) => { if (e.status >== 500) { return cachedVersion(); new Error(`${ e.status

  • 问题内容: 我正在为Android开发Java应用程序,目前遇到了一个问题,调试器正在进入catch块,并且ex为何为null?有人看过这样的东西吗? 问题答案: 这听起来像源代码,并且编译的类不同步,因此调试器正在进入错误的块。 尝试进行清理,然后进行重建。

  • 5.10. Recover捕获异常 通常来说,不应该对panic异常做任何处理,但有时,也许我们可以从异常中恢复,至少我们可以在程序崩溃前,做一些操作。举个例子,当web服务器遇到不可预料的严重问题时,在崩溃前应该将所有的连接关闭;如果不做任何处理,会使得客户端一直处于等待状态。如果web服务器还在开发阶段,服务器甚至可以将异常信息反馈到客户端,帮助调试。 如果在deferred函数中调用了内置函