JAVA创建DataSource

为什么会用到 DataSource

在我读 oauth2 源码的时候,Spring 中提供了大量的测试代码,运行测试代码更方便自己理解,但是测试代码中使用的大多都是 Hsqldb等等,我想连接我的开发库(MySql8)进行测试。

传统的连接方式配置比较麻烦,这里使用 alibabadruid 来获取 datasource

引入依赖

1
2
3
4
5
6

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>

创建工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 创建 DataSource 连接
* 测试使用
*
* @author maxzhao
* @date 2020-01-17 15:36
*/
public class BootDataSource {
private static final String url = "jdbc:mysql://127.0.0.1:3306/oauth2_boot?charset=utf8mb4&serverTimezone=GMT%2B8&useUnicode=true&useSSL=false";
private static final String username = "maxzhao";
private static final String password = "maxzhao";
private static final String drive = "com.mysql.cj.jdbc.Driver";

public static DataSource createDataSource() throws Exception {
Map<String, String> map = new HashMap<>();
map.put(DruidDataSourceFactory.PROP_DRIVERCLASSNAME, drive);
map.put(DruidDataSourceFactory.PROP_URL, url);
map.put(DruidDataSourceFactory.PROP_USERNAME, username);
map.put(DruidDataSourceFactory.PROP_PASSWORD, password);
return DruidDataSourceFactory.createDataSource(map);
}
}

引用工具类

这是在 JdbcClientDetailsServiceTests 中的一个初始化方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
// 原来的
// private EmbeddedDatabase db;
// 新的
private DataSource db;
@Before
public void setUp()throws Exception{
// creates a HSQL in-memory db populated from default scripts
// classpath:schema.sql and classpath:data.sql
// db = new EmbeddedDatabaseBuilder().addDefaultScripts().build();
db=BootDataSource.createDataSource();
jdbcTemplate=new JdbcTemplate(db);
service=new JdbcClientDetailsService(db);
}

到这里就结束了,配置很简单。

我这里使用的是 MySql8的配置。

MySql5.xMySql8 的区别要个别注意一下。

本文地址:JAVA创建DataSource

本文地址: https://github.com/maxzhao-it/blog/post/53775/