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>