(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類的不一樣方法,分別指定使用不一樣的數據源?下篇文章將爲你們進行講解,下期見!