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>
浙公网安备 33010602011771号