복붙노트

[SPRING] 스프링 부트 (Spring Boot)와 MongoDB에 대한 연결 세부 사항 구성 방법

SPRING

스프링 부트 (Spring Boot)와 MongoDB에 대한 연결 세부 사항 구성 방법

스프링 부트에 익숙하지 않아 MongoDB의 연결 세부 사항을 어떻게 구성 할 수 있는지 궁금합니다. 일반적인 예제를 시도했지만 아무도 연결 세부 사항을 다루지 않습니다.

사용하려고하는 데이터베이스와 MongoDB를 실행하는 호스트의 URL / 포트를 지정하고 싶습니다.

어떤 힌트 또는 팁?

해결법

  1. ==============================

    1.부트 문서를 인용하기 만하면됩니다.

    부트 문서를 인용하기 만하면됩니다.

    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;
    
  2. ==============================

    2.maven 프로젝트에서 다음 내용으로 src / main / resources / application.yml 파일을 생성하십시오 :

    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는이 파일을 자동으로 사용하여 응용 프로그램을 구성합니다. 그런 다음 통합 프로필을 사용하여 스프링 부트 응용 프로그램을 시작할 수 있습니다 (로컬 MongoDB 사용)

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

    또는 프로덕션 프로파일로 (그리고 프로덕션 MongoDB를 사용하여)

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

    3.Spring.data.mongodb.host 및 spring.data.mongodb.port는 Mongo 3.0 Java 드라이버를 사용하는 경우 지원되지 않습니다. 그러한 경우 spring.data.mongodb.uri를 사용하여 다음과 같이 모든 구성을 제공해야합니다.

    Spring.data.mongodb.host 및 spring.data.mongodb.port는 Mongo 3.0 Java 드라이버를 사용하는 경우 지원되지 않습니다. 그러한 경우 spring.data.mongodb.uri를 사용하여 다음과 같이 모든 구성을 제공해야합니다.

    spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345
    
  4. ==============================

    4.AbstractMongoConfiguration을 확장하여 더 자세한 내용을 정의 할 수 있습니다.

    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;
        }
    }
    
  5. ==============================

    5.여기에 Spring Boot 2.0에서 MongoClient 커스텀을 생성함으로써 어떻게 할 수 있는가? Connection에 더 많은 컨트롤을 제공하고,

    여기에 Spring Boot 2.0에서 MongoClient 커스텀을 생성함으로써 어떻게 할 수 있는가? Connection에 더 많은 컨트롤을 제공하고,

    전체 소스 코드에 대한 github Link를 따르십시오.

    @Configuration
    @EnableMongoRepositories(basePackages = { "com.frugalis.repository" })
    @ComponentScan(basePackages = { "com.frugalis.*" })
    @PropertySource("classpath:application.properties")
    public class MongoJPAConfig extends AbstractMongoConfiguration {
    
        @Value("${com.frugalis.mongo.database}")
        private String database;
        @Value("${com.frugalis.mongo.server}")
        private String host;
        @Value("${com.frugalis.mongo.port}")
        private String port;
        @Value("${com.frugalis.mongo.username}")
        private String username;
        @Value("${com.frugalis.mongo.password}")
        private String password;
    
    
        @Override
        protected String getDatabaseName() {
            return database;
        }
    
        @Override
        protected String getMappingBasePackage() {
            return "com.frugalis.entity.mongo";
        }
    
        @Bean
        public MongoTemplate mongoTemplate() throws Exception {
            return new MongoTemplate(mongoClient(), getDatabaseName());
        }
    
        @Override
        @Bean
        public MongoClient mongoClient() {
    
            List<MongoCredential> allCred = new ArrayList<MongoCredential>();
            System.out.println("???????????????????"+username+" "+database+" "+password+" "+host+" "+port);
            allCred.add(MongoCredential.createCredential(username, database, password.toCharArray()));
            MongoClient client = new MongoClient((new ServerAddress(host, Integer.parseInt(port))), allCred);
            client.setWriteConcern(WriteConcern.ACKNOWLEDGED);
    
            return client;
        }} 
    
  6. from https://stackoverflow.com/questions/23515295/spring-boot-and-how-to-configure-connection-details-to-mongodb by cc-by-sa and MIT license