添加依赖
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
去掉自动配置
@SpringBootApplication(exclude = {
MongoAutoConfiguration.class,
MongoDataAutoConfiguration.class
}
)
yml 配置
data:
mongodb:
event:
uri: mongodb://xxx:27017/event?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&3t.uriVersion=3&3t.connection.name=event
event-flow:
uri: mongodb://xxx:27017/event-flow?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&3t.uriVersion=3&3t.connection.name=event
配置
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
@Getter
@Setter
public abstract class AbstractMongoConfigure {
public MongoDatabaseFactory mongoDbFactory(String connectionString) {
return new SimpleMongoClientDatabaseFactory(connectionString);
}
}
import lombok.extern.slf4j.Slf4j;
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.core.MongoTemplate;
@Configuration
@Slf4j
public class MondDbConfig extends AbstractMongoConfigure {
@Value("${spring.data.mongodb.event.uri}")
private String eventUri;
@Value("${spring.data.mongodb.event-flow.uri}")
private String eventFlowUri;
@Primary
@Bean(name = "eventMongoTemplate")
public MongoTemplate eventMongoTemplate() throws Exception {
log.info("eventUri:{}", eventUri);
return new MongoTemplate(mongoDbFactory(eventUri));
}
@Bean(name = "eventFlowMongoTemplate")
public MongoTemplate eventFlowMongoTemplate() throws Exception {
log.info("eventFlowUri:{}", eventFlowUri);
return new MongoTemplate(mongoDbFactory(eventFlowUri));
}
}
测试
import org.junit.jupiter.api.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 static org.junit.jupiter.api.Assertions.*;
@RunWith(SpringRunner.class)
@SpringBootTest
class MondDbConfigTest {
@Autowired
@Qualifier(value = "eventMongoTemplate")
MongoTemplate eventMongoTemplate;
@Autowired
@Qualifier(value = "eventFlowMongoTemplate")
MongoTemplate eventFlowMongoTemplate;
@Test
void eventMongoTemplate() {
assertNotNull(eventMongoTemplate);
}
@Test
void eventFlowMongoTemplate() {
assertNotNull(eventFlowMongoTemplate);
}
}