[英]Java Spring Boot MongoDB Configuration
我是新手,我嘗試使用 Java Spring Boot 開發 API。 我對 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);
}
項目存儲庫.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
你能幫我理解我的錯誤嗎? 謝謝您,非常感謝您的幫助!
您確定您的 MongoDB URI 嗎?通常,URI 的格式為mongodb:\/\/localhost:27017\/foo<\/code> 。
如果您使用Spring-boot<\/strong>而不是使用配置 bean,我建議您使用application.properties<\/em>文件。在這個文件中寫入一個
spring.data.mongodb.uri=mongodb:\/\/localhost:27017\/foo<\/code>的屬性, Spring-boot 會<\/strong>自動在 MongoClient 中注入這些屬性,而無需在代碼級別進行任何配置。
"
通過配置 Mongo iuth 屬性文件嘗試如@Federico Gatti 所說:
spring.data.mongodb.database=MongoDatabaseName
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
使用屬性文件通過應用程序配置您的數據庫,並讓 spring boot 使用 db 配置為您完成所有工作。
轉到 resources/application.properties 文件,並將以下內容添加到其中:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydatabase
這將允許您的應用程序正確連接到您的 MongoDB 數據庫。
此外,轉到主應用程序類,並在其聲明之前添加以下注釋:
@EnableMongoRepositories(basePackageClasses = foo.class)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.