您的位置:首页 > 编程语言 > Java开发

SpringBoot 设置多数据源访问

2017-10-10 08:58 501 查看
1、添加maven依赖注入

<!--properties所需依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>


2、修改application.yml配置文件

mysql-logic-db:
name: logic
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.1.113:3306/test1?useUnicode=true&characterEncoding=utf-8
username: root
password: root

mysql-dao-db:
name: dao
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.1.113:3306/test2?useUnicode=true&characterEncoding=utf-8
username: root
password: root


3、多数据源配置

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
* 多数据源配置(mysql,oracle)
* @author 陈梓平
* @date 2017/9/27.
*/
@Configuration
public class MultipleDBConfig {
@Bean(name = "mysqlDB_logic")
@Primary
@ConfigurationProperties(prefix = "mysql-logic-db")
public DataSource mysqlLogicDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "mysqlDB_dao")
@ConfigurationProperties(prefix = "mysql-dao-db")
public DataSource mysqlDAODataSource() {
return DataSourceBuilder.create().build();
}
}


注解 备注

@Primary 优先方案,被注解的实现,优先被注入

@Qualifier 先声明后使用,相当于多个实现起多个不同的名字,注入时候告诉我你要注入哪个

4、单元测试多数据源

/**
* 单元测试多数据源
* @author 陈梓平
* @date 2017/9/27.
*/

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMultipleDB {

private Logger logger = LoggerFactory.getLogger(TestMultipleDB.class);

@Autowired
@Qualifier("mysqlDB_logic")
private DataSource mysqlDB_logic;

@Autowired
@Qualifier("mysqlDB_dao")
private DataSource mysqlDB_dao;

@Test
public void testMysqlDB_logic() throws SQLException {
if (mysqlDB_logic!=null){
Connection connection = mysqlDB_logic.getConnection();
PreparedStatement ppst = null;
ResultSet rs = null;
ppst = connection.prepareStatement("SELECT id FROM journal");
rs = ppst.executeQuery();
List<String> list = new ArrayList<>();
while (rs.next()) {
list.add( rs.getString(1));
}
logger.info("size="+list.size());
}
}

@Test
public void testMysqlDB_dao() throws SQLException {
if (mysqlDB_dao!=null){
Connection connection = mysqlDB_dao.getConnection();
PreparedStatement ppst = null;
ResultSet rs = null;
ppst = connection.prepareStatement("SELECT nId FROM news");
rs = ppst.executeQuery();
List<String> list = new ArrayList<>();
while (rs.next()) {
list.add( rs.getString(1));
}
logger.info("size="+list.size());
}
}
}


5、测试结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: