springboot整合mongo多数据源

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.1.RELEASE</version>
		<relativePath/>
</parent>

<!--springboot整合mongodb-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>

  

spring.data.mongodb.zero.uri=mongodb://test:test2021@127.0.0.1:27017/yourheart-test

spring.data.mongodb.first.uri=mongodb://test:test123@127.0.0.1:27019/yourheartTest

  

package com.java.controller.mongo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;

/**
 * 描述: DemoEntity
 *
 * @author yanpenglei
 * @create 2018-02-03 16:52
 **/
@Document(collection = "demo_collection")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DemoEntity implements Serializable {

    @Id
    private Long id;
    /**
     * 标题
     */
    private String title;
    /**
     * 内容
     */
    private String description;

    /**
     * 创建时间
     */
   private String createdTime;
    /**
     * 修改时间
     */
   private String updateTime;
    /**
     * 操作用户
     */
   private String user;



}

  

package com.java.config;

import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

/**
 * @author yourheart
 * @Description
 * @create 2022-06-04 23:49
 */
@Configuration
public class MongoDatasourceProperties {

    /**
     * 连接MongoDB地址
     */
    @Value("${spring.data.mongodb.zero.uri}")
    private String uri;


    public MongoDbFactory mongoDbFactory(){
        MongoClientURI mongoclienturi = new MongoClientURI(uri);
        return new SimpleMongoDbFactory(mongoclienturi);
    }

    @Primary
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate((mongoDbFactory()));
    }
}

  

package com.java.config;

import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

/**
 * @author yourheart
 * @Description
 * @create 2022-06-06 21:01
 */
@Configuration
public class MongoFirstDatasource {

    /**
     * 连接MongoDB地址
     */
    @Value("${spring.data.mongodb.first.uri}")
    private String uri;


    public MongoDbFactory mongoDbFactory(){
        MongoClientURI mongoclienturi = new MongoClientURI(uri);
        return new SimpleMongoDbFactory(mongoclienturi);
    }

    @Bean(name = "firstMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate((mongoDbFactory()));
    }
}

 mongo多数据源测试

package com.java.mongo;

import com.java.bean.HistoryPassword;
import com.java.controller.mongo.DemoEntity;
import com.java.controller.mongo.birth.BirthBean;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author yourheart
 * @Description
 * @create 2022-06-06 21:15
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class MongoTest {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Resource
    @Qualifier("firstMongoTemplate")
    private MongoTemplate firstMongoTemplate;

    @Test
    public void demoCollectionTest(){

        List<DemoEntity> all = mongoTemplate.findAll(DemoEntity.class);

        log.info("老库数据记录数:{}",all.size());
        all.forEach(demoEntity->{
            firstMongoTemplate.save(demoEntity);

        });

        List<DemoEntity>  newDatasource = firstMongoTemplate.findAll(DemoEntity.class);
        log.info("新库数据记录数:{}",newDatasource.size());


    }
}

  补充pom依赖

<!--lombok依赖-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.16</version>
		</dependency>

 <!--引入junit单元测试依赖-->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
		<finalName>pingan</finalName>
	</build>

  

 

posted @ 2022-06-06 22:03  不忘初心2021  阅读(45)  评论(0编辑  收藏  举报