(6)编写测试类java
咱们编写一个简单的类进行测试下,到底咱们的多数据源是否注入成功了。web
com.kfit.controller.TestController:spring
package com.kfit.controller;sql
import java.sql.ResultSet;数据库
import java.sql.SQLException;app
import javax.sql.DataSource;ide
importorg.springframework.beans.factory.annotation.Autowired;测试
importorg.springframework.beans.factory.annotation.Qualifier;this
importorg.springframework.jdbc.core.JdbcTemplate;代理
importorg.springframework.jdbc.core.RowMapper;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RestController;
/**
* 测试;
* @author Angel(QQ:412887952)
* @version v.0.1
*/
@RestController
publicclass TestController {
//没有指定为主数据源.
@Autowired
private DataSource dataSource;
@Autowired
@Qualifier("ds1")
private DataSource dataSource1;
@Autowired
@Qualifier("ds2")
private DataSource dataSource2;
private JdbcTemplate jdbcTemplate;
@Autowired
publicvoidsetJdbcTemplate(JdbcTemplate jdbcTemplate) {
System.out.println("TestController.setJdbcTemplate()");
jdbcTemplate.setDataSource(dataSource1);//设置dataSource
this.jdbcTemplate = jdbcTemplate;
}
@RequestMapping("/get")
public String get(){
//观察控制台的打印信息.
System.out.println(dataSource);
return"ok";
}
@RequestMapping("/get1")
public String get1(){
//观察控制台的打印信息.
System.out.println(dataSource1);
return"ok.1";
}
@RequestMapping("/get2")
public String get2(){
//观察控制台的打印信息.
System.out.println(dataSource2);
return"ok.2";
}
@RequestMapping("/get3")
public String get3(){
//观察控制台的打印信息.
JdbcTemplatejdbcTemplate = new JdbcTemplate(dataSource1);
System.out.println(jdbcTemplate.getDataSource());
System.out.println(jdbcTemplate);
/*
* Demo1只在test1中存在,test并无此数据库;
* 须要本身本身进行复制,否则会报错:Table 'test1.demo1'doesn't exist
*/
Stringsql = "select*from Demo1";
jdbcTemplate.query(sql, newRowMapper<String>(){
@Override
public String mapRow(ResultSet rs, introwNum) throws SQLException {
System.out.println(rs.getLong("id")+"---"+rs.getString("name"));
return"";
}
});
return"ok.3";
}
@RequestMapping("/get4")
public String get4(){
//观察控制台的打印信息.
System.out.println(jdbcTemplate.getDataSource());
System.out.println(jdbcTemplate);
/*
* Demo1只在test1中存在,test并无此数据库;
* 须要本身本身进行复制,否则会报错:Table 'test1.demo1'doesn't exist
*/
Stringsql = "select*from Demo1";
jdbcTemplate.query(sql, newRowMapper<String>(){
@Override
public String mapRow(ResultSet rs, introwNum) throws SQLException {
System.out.println(rs.getLong("id")+"---"+rs.getString("name"));
return"";
}
});
return"ok.4";
}
}
以上代码在实际开发中,是绝对不能这么编写的,这里只是为了方便进行测试。
(7)测试
Run As 运行app.java进行测试:
访问:
http://127.0.0.1:8080/get
http://127.0.0.1:8080/get1
http://127.0.0.1:8080/get2
http://127.0.0.1:8080/get3
http://127.0.0.1:8080/get4
查看控制台的打印信息。
然而咱们在项目中不必定须要直接使用dataSource的,你们都习惯使用JDBC的jdbcTemplate、Mybatis的sqlSessionTemplate,再或者就是以Mybatis为例直接动态代理到Mapper接口上。
那么如何作到彻底动态数据源呢,以致于实现咱们能够为同一个Java类的不一样方法,分别指定使用不一样的数据源?下篇文章将为你们进行讲解,下期见!