Конфигурация Java Spring Boot MongoDB - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок и пытаюсь разработать API с помощью Java Spring Boot.У меня проблема с MongoDB Config, и у меня нет проблем в другом проекте.Я не понимаю почему.Я уже посмотрел, но предложенные решения не работают.

SBApplication.java:

package basket;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication (scanBasePackages = { "basket.instrastructure.dao" })
@EnableSwagger2
@EnableAutoConfiguration //(exclude={MongoAutoConfiguration.class, MongoRepositoriesAutoConfiguration.class})
public class SBApplication {

    public static void main(String[] args) {
        SpringApplication.run(SBApplication.class, args);
    }
}

BasketRepository.java:

package basket.infrastructure.dao;

import java.util.ArrayList;

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

import basket.domaine.model.Basket;

@Repository 
public interface BasketRepository extends MongoRepository<Basket, Long> {

    public ArrayList<Basket> findAll();
    public Basket findById(String id);    
}

ItemRepository.java:

package basket.infrastructure.dao;

import java.util.ArrayList;

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

import basket.domaine.model.Item;


@Repository
public interface ItemRepository extends MongoRepository<Item, Long> {
    public Item findByName(String name);
    public ArrayList<Item> findAll();
    public Item findById(String id);
}

MongoConfig.java:

package basket.application.components;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;

@Configuration
@EnableMongoRepositories ("basket.infrastructure.dao")
public class MongoConfig extends  AbstractMongoConfiguration {

    @Override
    @Bean
    public Mongo mongo() throws Exception {
        MongoClientURI uri = new MongoClientURI("mongodb+srv://owner:AAAAA@basketcluster-feebu.mongodb.net/test?retryWrites=true");
        MongoClient mongoClient = new MongoClient(uri);
        MongoDatabase database = mongoClient.getDatabase("test");
        return mongoClient;
    }

    @Override
    protected String getDatabaseName() {
        return "test";
    }
}

И у меня есть эта ошибка

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongodb-driver-core-3.4.2.jar:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_181]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_181]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_181]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_181]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_181]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_181]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongodb-driver-core-3.4.2.jar:na]
    ... 3 common frames omitted

Можете ли вы помочь мне понять мою ошибку.Спасибо, любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Попробуйте, как сказал @Federico Gatti, настроить файл свойств Mongo iuth:

spring.data.mongodb.database=MongoDatabaseName
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
0 голосов
/ 20 ноября 2018

Вы уверены в своем URI MongoDB?Обычно URI имеет форму mongodb://localhost:27017/foo.

Если вы используете Spring-boot вместо компонента EJB Configuration, я предлагаю вам использовать файл application.properties .В этом файле напишите свойство любит spring.data.mongodb.uri=mongodb://localhost:27017/foo и Spring-boot автоматически внедряет свойства в MongoClient без какой-либо настройки на уровне кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...