簡體   English   中英

無法連接 Spring 開機與 MongoDb

[英]Can't connect Spring boot with MongoDb

我正在嘗試使用 Spring Boot 與 Spring Boot 2.3.9 中的 MongoDB 一起制作一個簡單的程序 Boot 2.3.9 從啟動日志中,我懷疑它初始化了兩次。

這是我的控制台 output:

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>

我的應用程序屬性:

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

我的 Object:

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>{

}

我的 Controller:

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 = "*") 注釋。 *(星號)表示您允許來自任何來源的請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM