这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的。同时存在。但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置加载数据源的话,往往只会启动一个。
我出于想弄清如何配置数据源的目的,在这里demo一个配置两个数据源的例子。分别是mysql和mongo。mysql的持久化采用的是mybatis。
mongo的操作比较简单,直接贴上配置数据库的代码:
1 packagecom.shihuc.dbconn.sourceconfig.mongo;2
3 importjava.util.Arrays;4
5 importorg.springframework.beans.factory.annotation.Value;6 importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;7 importorg.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;8 importorg.springframework.boot.autoconfigure.mongo.MongoDataAutoConfiguration;9 importorg.springframework.context.annotation.Bean;10 importorg.springframework.context.annotation.ComponentScan;11 importorg.springframework.context.annotation.Configuration;12 importorg.springframework.data.mongodb.config.AbstractMongoConfiguration;13 importorg.springframework.data.mongodb.repository.config.EnableMongoRepositories;14
15 importcom.mongodb.Mongo;16 importcom.mongodb.MongoClient;17 importcom.mongodb.MongoCredential;18 importcom.mongodb.ServerAddress;19 importcom.mongodb.WriteConcern;20
21 @Configuration22 @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})23 @ComponentScan24 @EnableMongoRepositories25 public class MongoDataSourceConfig extendsAbstractMongoConfiguration{26
27 @Value("${mongo.database}")28 privateString dbname;29
30 @Value("${mongo.host}")31 privateString dbhost;32
33 @Value("${mongo.port}")34 privateString dbport;35
36 @Value("${mongo.username}")37 privateString username;38
39 @Value("${mongo.password}")40 privateString password;41
42 @Override43 protectedString getDatabaseName() {44 return this.dbname;45 }46
47 publicMongoDataSourceConfig(){48 if(null == dbport || "".equalsIgnoreCase(dbport.trim())){49 dbport = "27017";50 }51 }52
53 @Override54 @Bean(name = "mongods")55 public Mongo mongo() throwsException {56 ServerAddress serverAdress = newServerAddress(dbhost, Integer.valueOf(dbport));57 MongoCredential credential =MongoCredential.createMongoCRCredential(username, dbname , password.toCharArray());58 //Do not use new Mongo(), is deprecated.
59 Mongo mongo = newMongoClient(serverAdress, Arrays.asList(credential));60 mongo.setWriteConcern(WriteConcern.SAFE);61 returnmongo;62 }63 }
mongo数据库配置继承AbstractMongoConfiguration,在这个过程中,会向spring容器注册一个mongoTemplate,这个很重要,后期操作mongo数据库时,主要靠它。
这里重点说下spring-boot和mybatis集成操作mysql的配置和注意事项。
1 packagecom.shihuc.dbconn.sourceconfig.mysql;2
3 importjavax.sql.DataSource;4
5 importorg.springframework.beans.factory.annotation.Value;6 importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;7 importorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;8 importorg.springframework.context.annotation.Bean;9 importorg.springframework.context.annotation.Configuration;10 importorg.springframework.jdbc.datasource.DriverManagerDataSource;11
12 @Configuration13 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})14 public classMysqlDataSourceConfig {15
16 @Value("${mysq