您的位置:首页 > 数据库 > Mongodb

springboot下使用JdbcTemplate和MongoTemplate链接多个mongodb源+sql源

2017-05-22 19:07 393 查看
application.yml配置

db:
mongo:
one: "mongodb://[user]:[pwd]@[ip]:[port]/[db]"
two: "mongodb://[user]:[pwd]@[ip]:[port]/[db]"
sql:
url:"jdbc:sqlserver://ip;DatabaseName=;instanceName="
user: "test"
pwd: "test"
driver: "com.microsoft.sqlserver.jdbc.SQLServerDriver"


配置类:DBConfig.java

@Configuration
public class DBConfig {

@Value("${db.sql.url}")
private String sqlUrl;
@Value("${db.sql.user}")
private String sqlUsername;
@Value("${db.sql.pwd}")
private String sqlPassword;
@Value("${db.sql.driver}")
private String sqlDriver;

@Value("${db.mongo.one}")
private String mongoOneUri;

@Value("${db.mongo.two}")
private String mongoTwoUri;

@Bean(name = "sqlDataSource")
public DataSource sourceDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(sqlDriver);
dataSource.setUrl(sqlUrl);
dataSource.setUsername(sqlUsername);
dataSource.setPassword(sqlPassword);
return dataSource;
}

@Bean(name = "oneMongoFactory")
@Primary
public MongoDbFactory oneMongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClientURI(mongoOneUri));
}

@Bean(name = "twoMongoDbFactory")
public MongoDbFactory twoMongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClientURI(mongoTwoUri));
}

@Bean(name = "sqlJdbcTemplate")
public JdbcTemplate JdbcTemplate(@Qualifier("sqlDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

@Bean(name = "oneMongoTemplate")
@Primary
public MongoTemplate oneMongoTemplate(@Qualifier("oneMongoFactory") MongoDbFactory mongoDbFactory) {
MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory),
new MongoMappingContext());
mappingMongoConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
return new MongoTemplate(mongoDbFactory, mappingMongoConverter);
}

@Bean(name = "twoMongoTemplate")
public MongoTemplate twoMongoTemplate(@Qualifier("twoMongoDbFactory") MongoDbFactory mongoDbFactory) {
return new MongoTemplate(mongoDbFactory);
}


Tips

1.mongo的uri的user或者pwd中若含有@等字符,需要对其进行urlencode。

2.上例中twoMongoTemplate会在插入mongo库时自动生成”_class”的key,若想去掉”_class”,使用oneMongoTemplate的例子即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: