尝试将Spring Boot应用程序与mongoDB连接

时间:2020-09-16 20:36:05

标签: java mongodb spring-boot

我正在尝试将Spring Boot应用程序连接到MongoDB,但出现以下错误:

启动ApplicationContext时出错。显示条件报告 在启用“调试”的情况下重新运行您的应用程序。 2020-09-16 17:21:17.728 错误10036 --- [restartedMain] o.s.boot.SpringApplication
:应用程序运行失败

org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“ mongo”的bean [org / springframework / boot / autoconfigure / mongo / MongoAutoConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:失败 实例化[com.mongodb.client.MongoClient]:工厂方法'mongo' 抛出异常;嵌套异常为 com.mongodb.MongoConfigurationException:无法查找TXT记录 用于主机simulacao.yko5j.mongodb.net,网址为 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:635) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:324) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) 〜[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) 〜[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) 〜[spring-boot-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 com.simulacao.simulacao.SimulacaoApplication.main(SimulacaoApplication.java:10) 〜[classes /:na]在 java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)〜[na:na]在 java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[na:na]在 java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[na:na]在 java.base / java.lang.reflect.Method.invoke(Method.java:564)〜[na:na] 在 org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) 〜[spring-boot-devtools-2.3.3.RELEASE.jar:2.3.3.RELEASE]原因: org.springframework.beans.BeanInstantiationException:失败 实例化[com.mongodb.client.MongoClient]:工厂方法'mongo' 抛出异常;嵌套异常为 com.mongodb.MongoConfigurationException:无法查找TXT记录 用于主机simulacao.yko5j.mongodb.net,网址为 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE] ... 25个常见帧 省略的原因:com.mongodb.MongoConfigurationException:无法 在以下位置查找主机simulacao.yko5j.mongodb.net的TXT记录 com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:131) 〜[mongodb-driver-core-4.0.5.jar:na]在 com.mongodb.ConnectionString。(ConnectionString.java:378) 〜[mongodb-driver-core-4.0.5.jar:na]在 org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.applyHostAndPort(MongoClientFactorySupport.java:102) 〜[spring-boot-autoconfigure-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.computeClientSettings(MongoClientFactorySupport.java:70) 〜[spring-boot-autoconfigure-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.createMongoClient(MongoClientFactorySupport.java:61) 〜[spring-boot-autoconfigure-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.mongo(MongoAutoConfiguration.java:57) 〜[spring-boot-autoconfigure-2.3.3.RELEASE.jar:2.3.3.RELEASE]在 java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)〜[na:na]在 java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[na:na]在 java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[na:na]在 java.base / java.lang.reflect.Method.invoke(Method.java:564)〜[na:na] 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) 〜[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE] ... 26个常见框架 省略原因:javax.naming.NameNotFoundException:DNS名称不正确 发现于[响应代码3] jdk.naming.dns / com.sun.jndi.dns.DnsClient.checkResponseCode(DnsClient.java:664) 〜[jdk.naming.dns:na]在 jdk.naming.dns / com.sun.jndi.dns.DnsClient.isMatchResponse(DnsClient.java:582) 〜[jdk.naming.dns:na]在 jdk.naming.dns / com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:430) 〜[jdk.naming.dns:na]在 jdk.naming.dns / com.sun.jndi.dns.DnsClient.query(DnsClient.java:214) 〜[jdk.naming.dns:na]在 jdk.naming.dns / com.sun.jndi.dns.Resolver.query(Resolver.java:81) 〜[jdk.naming.dns:na]在 jdk.naming.dns / com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434) 〜[jdk.naming.dns:na]在 java.naming / com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235) 〜[na:na]在 java.naming / com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141) 〜[na:na]在 java.naming / com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129) 〜[na:na]在 java.naming / javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:171) 〜[na:na]在 com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114) 〜[mongodb-driver-core-4.0.5.jar:na] ...省略了36个常见框架

我的application.properties:

spring.data.mongodb.uri=mongodb+srv://renan:masterkey@simulacao.yko5j.mongodb.net/simulacao?retryWrites=true&w=majority

我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.simulacao</groupId>
    <artifactId>simulacao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>simulacao</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>14</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

我通过Atlas MongoDB创建了到数据库的连接。

我不知道如何解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

这似乎是错误跟踪与数据库的连接问题。您可以检查端口27017是否被防火墙阻止。您需要在防火墙中为此端口打开出站和入站。

适用于Windows的步骤:

  1. 转到防火墙
  2. 高级设置
  3. 入站规则
  4. 使用“操作”标签下的“新建规则”创建新规则
  5. 选择端口
  6. 选择TCP并指定端口号(27015,27016,27017)
  7. 允许连接
  8. 单击下一步
  9. 为新规则完成添加名称
  10. 遵循“出站规则”的相同步骤。完成后,重新启动 系统。