无法将 Spring Boot 与 MongoDb 连接

问题描述

我正在尝试使用 Spring Boot 2.3.9 中的 MongoDB 制作一个简单的程序 从启动日志我怀疑有问题,好像初始化了两次。

这是我的控制台输出

2021-03-08 01:54:43.515  INFO 26609 --- [  restartedMain] c.a.a.r.SpringbootRegistroApplication    : Starting SpringbootRegistroApplication on santiagoVB with PID 26609 (/home/santiago/Documentos/workspace/springboot-registro/target/classes started by santiago in /home/santiago/Documentos/workspace/springboot-registro)
2021-03-08 01:54:43.521  INFO 26609 --- [  restartedMain] c.a.a.r.SpringbootRegistroApplication    : No active profile set,falling back to default profiles: default
2021-03-08 01:54:43.680  INFO 26609 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-03-08 01:54:43.682  INFO 26609 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-03-08 01:54:45.719  INFO 26609 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2021-03-08 01:54:45.895  INFO 26609 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 167ms. Found 1 MongoDB repository interfaces.
2021-03-08 01:54:46.683  INFO 26609 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-03-08 01:54:46.699  INFO 26609 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-03-08 01:54:46.701  INFO 26609 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.43]
2021-03-08 01:54:46.830  INFO 26609 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-03-08 01:54:46.830  INFO 26609 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3147 ms
2021-03-08 01:54:47.152  INFO 26609 --- [  restartedMain] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:27017],mode=SINGLE,requiredClusterType=UNKNowN,serverSelectionTimeout='30000 ms'}
2021-03-08 01:54:47.363  INFO 26609 --- [localhost:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1,serverValue:12}] to localhost:27017
2021-03-08 01:54:47.372  INFO 26609 --- [localhost:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017,type=STANDALONE,state=CONNECTED,ok=true,minWireversion=0,maxWireversion=9,maxDocumentSize=16777216,logicalSessionTimeoutMinutes=30,roundtripTimeNanos=5581801}
2021-03-08 01:54:47.714  INFO 26609 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-03-08 01:54:48.326  INFO 26609 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-03-08 01:54:48.685  INFO 26609 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-03-08 01:54:48.701  INFO 26609 --- [  restartedMain] c.a.a.r.SpringbootRegistroApplication    : Started SpringbootRegistroApplication in 6.21 seconds (JVM running for 9.239)

我的 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.9.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.appcity.app.registro</groupId>
    <artifactId>springboot-registro</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-registro</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>15</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.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.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

我的 application.properties:

spring.data.mongodb.uri=mongodb://localhost:27017/App
spring.data.mongodb.auto-index-creation=true
#spring.data.mongodb.host=localhost
#spring.data.mongodb.port=27017
#spring.data.mongodb.username=Udea
#spring.data.mongodb.password=udeapp
#spring.data.mongodb.database=App

我的对象:

package com.appcity.app.registro.models.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "UsuarioDb")
public class UsuarioDb {

    @Id
    private String id;
    private String username;
    private String phone;
    private String email;
    private String password;

    public UsuarioDb() {
        super();
    }

    public UsuarioDb(String id,String username,String phone,String email,String password) {
        super();
        this.id = id;
        this.username = username;
        this.phone = phone;
        this.email = email;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getpassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UsuarioDb [id=" + id + ",username=" + username + ",phone=" + phone + ",email=" + email
                + ",password=" + password + "]";
    }

}

我的界面:

package com.appcity.app.registro.models.dao;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import com.appcity.app.registro.models.entity.UsuarioDb;

@Repository
public interface RegistroDao extends MongoRepository<UsuarioDb,String>{

}

我的控制器:

package com.appcity.app.registro.controllers;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.appcity.app.registro.models.dao.RegistroDao;
import com.appcity.app.registro.models.entity.UsuarioDb;

//@CrossOrigin
@RestController
public class RegistroController {
    
    @Autowired
    private RegistroDao repository;

    @PostMapping("/registro/crear")
    public String saveUsuarioDb(@RequestBody UsuarioDb usuarioDb) {
        repository.save(usuarioDb);
        return "Added usuarioDb with id : " + usuarioDb.getId();
    }

    @GetMapping("/registro/listar")
    public List<UsuarioDb> getUsers(){
        return repository.findAll();
    }
    
    @GetMapping("/registro/listar/{id}")
    public Optional<UsuarioDb> getUser(@PathVariable String id){
        return repository.findById(id);
    }
    
    @DeleteMapping("/registro/eliminar/{id}")
    public String deleteUser(@PathVariable String id) {
        repository.deleteById(id);
        return "usuarioDb deleted with id : "+id;
    }
}

我在 Ubuntu 中的 MongoDb 状态:

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-03-08 00:30:58 -05; 1h 46min ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 21445 (mongod)
     Memory: 160.1M
     CGroup: /system.slice/mongod.service
             └─21445 /usr/bin/mongod --config /etc/mongod.conf

mar 08 00:30:58 santiagoVB systemd[1]: Started MongoDB Database Server.

我在 MongoDb 中的数据库

show dbs
App     0.000GB
admin   0.000GB
config  0.000GB
local   0.000GB

我做错了什么? 我有什么配置错误

解决方法

我遇到了类似的问题,我安装了不同的 JDK 补丁。我有 JDK 11.0.2,我将其更改为 JDK 11.0.10,它对我有用。

另外,你需要有@CrossOrigin(origins = "*") 注释。 *(星号)表示您允许来自任何来源的请求。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...