繁体   English   中英

Spring Boot - MongoDB - MongoLab配置

[英]Spring Boot - MongoDB - MongoLab configuration

我正在尝试配置我的Spring Boot后端以连接到MongoLab上托管的MongoDB。

问题是它尝试连接到localhost。 我得到的错误是:

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>

很感谢任何形式的帮助!

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

FoodappBackendApplication更新为

@SpringBootApplication
public class FoodappBackendApplication {

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

对于基于Java的配置,您可以查看此内容。

Spring Boot不从Java类读取MongoDB配置

我可以看到几个问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM