2017-06-12 209 views
1

我试图配置我的Spring Boot后端连接到MongoLab上承载的MongoDB。Spring Boot - MongoDB - MongoLab配置

问题是它试图连接到本地主机。我得到的错误是:

2017-06-12 17:34:05.046 INFO 11843 --- [127.0.0.1:27017] 
org.mongodb.driver.cluster    : Exception in monitor thread while connecting to server 127.0.0.1:27017 
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:745) [na:1.8.0_25] 
Caused by: java.net.ConnectException: Connection refused 
     at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_25] 
     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) ~[na:1.8.0_25] 
     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_25] 
     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_25] 
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_25] 
     at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_25] 
     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 

我试过排除MongoAutoConfiguration.class,但我得到了同样的错误。

我的代码:

FoodappBackendApplication.java:

@SpringBootApplication 
@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class}) 
//@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) 
public class FoodappBackendApplication { 

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

application.properties:

server.port=8181 
spring.data.mongodb.host=mongoserver 
spring.data.mongodb.database=foodapp 
spring.data.mongodb.uri=mongodb://<myusername>:<mypassword>@ds123456.mlab.com:12345/foodapp 
spring.data.mongodb.authentication-database: admin 

SpringMongoConfig.java:

@Configuration 
public class SpringMongoConfig extends AbstractMongoConfiguration { 

    @Override 
    public String getDatabaseName() { 
     return "foodapp"; 
    } 

    @Override 
    @Bean 
    public Mongo mongo() throws Exception { 
     return new MongoClient(); 
    } 
} 

pom.xml的依赖关系:

<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-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongodb-driver</artifactId> 
      <version>3.4.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-mongodb</artifactId> 
      <version>1.10.4.RELEASE</version> 
     </dependency> 
    </dependencies> 

任何帮助是非常感谢!

回答

2

SpringMongoConfig取出@Bean mongo()为此事删除类都在一起,你已经提供的application.properties所有必要的配置文件。

更新您的FoodappBackendApplication

@SpringBootApplication 
public class FoodappBackendApplication { 

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

对于基于Java的配置,你可以看看这个。

Spring Boot does not read MongoDB configuration from Java class

+0

非常感谢!我在那里感到困惑 – spacewalk92

1

夫妇的问题,我可以看到:

  1. 是您打算用.yml或的.properties?假设你想使用.yml,你应该将你的属性文件重命名为application.yml
  2. 你的YML缩进是错误的。你的文件应该是这样的: spring: data: mongodb: uri: # note the indentation level of this key 这春天然后转换成一个属性spring.data.mongodb.uri
+0

我的意图是使用.properties。我是新手,所以我仍然在学习。我更新了我的任务,以反映我现在拥有的东西。我仍然有同样的问题。 感谢您的帮助。 – spacewalk92