Spring Boot и как настроить детали подключения к MongoDB?



будучи новичком в Spring Boot мне интересно, как я могу настроить детали подключения для MongoDB.
Я пробовал обычные примеры, но ни один не охватывает детали подключения.



Я хочу указать базу данных, которая будет использоваться и url/порт хоста, который запускает MongoDB.



любые подсказки или советы?

804   4  

4 ответов:

просто цитата Boot Docs:

вы можете установить spring.data.mongodb.uri свойство, чтобы изменить url, или альтернативно указать host/port. Например, вы можете объявить следующее в своем application.properties:

spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017

все доступные опции для spring.data.mongodb префикс поля MongoProperties:

private String host;

private int port = DBPort.PORT;

private String uri = "mongodb://localhost/test";

private String database;

private String gridFsDatabase;

private String username;

private char[] password;

в проекте maven создайте файл src/main/resources/application.yml следующего содержания:

spring.profiles: integration
# use local or embedded mongodb at localhost:27017
---
spring.profiles: production
spring.data.mongodb.uri: mongodb://<user>:<passwd>@<url>:<port>/<dbname>

Spring Boot автоматически использует этот файл для настройки вашего приложения. Затем вы можете запустить приложение spring boot либо с профилем интеграции (и использовать локальный MongoDB)

java -jar -Dspring.profiles.active=integration your-app.jar

или с производственным профилем (и используйте свой производственный MongoDB)

java -jar -Dspring.profiles.active=production your-app.jar

вы можете определить более подробную информацию, расширив AbstractMongoConfiguration.

@Configuration
@EnableMongoRepositories("demo.mongo.model")
public class SpringMongoConfig extends AbstractMongoConfiguration {
    @Value("${spring.profiles.active}")
    private String profileActive;

    @Value("${spring.application.name}")
    private String proAppName;

    @Value("${spring.data.mongodb.host}")
    private String mongoHost;

    @Value("${spring.data.mongodb.port}")
    private String mongoPort;

    @Value("${spring.data.mongodb.database}")
    private String mongoDB;

    @Override
    public MongoMappingContext mongoMappingContext()
        throws ClassNotFoundException {
        // TODO Auto-generated method stub
        return super.mongoMappingContext();
    }
    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient(mongoHost + ":" + mongoPort);
    }
    @Override
    protected String getDatabaseName() {
        // TODO Auto-generated method stub
        return mongoDB;
    }
}

spring.data.mongodb.host и spring.data.mongodb.port не поддерживаются, если вы используете драйвер Java Mongo 3.0. В таких случаях spring.data.mongodb.uri должен использоваться для обеспечения всей конфигурации, например:

spring.data.mongodb.uri=mongodb://user:[email protected]:12345

Comments

    Ничего не найдено.