什么是数据源
数据源:即连接池
数据源的作用
- 数据源就是为了提高程序性能而出现的
- 事先实例化数据源,初始化部分连接资源
- 使用连接资源时从数据源中获取
- 使用完毕后将连接资源归还给数据源
常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等
数据源的开发步骤
- (1)导入数据源和数据库驱动jar包
- (2)创建数据源对象
- (3)设置数据源的基本连接数据
- (4)使用数据源获取连接资源和归还连接资源
C3P0数据源的手动创建
public class DataSourceTest {
@Test
//测试手动创建c3p0数据源
public void test1() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3307/test");
dataSource.setUser("root");
dataSource.setPassword("123");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
}
Druid数据源的手动创建
@Test
//测试手动创建druid数据源
public void test2() throws Exception{
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3307/test");
dataSource.setUsername("root");
dataSource.setPassword("123");
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
抽取jdbc.properties文件
从之前的代码我们可以知道,如果数据库的相关配置是写在代码中的话,那么每一次我们配置新的数据库都要寻找源码进行修改,这是非常麻烦的事情,因此我们需要将相关配置的部分抽取为一个配置文件。
@Test
//测试手动创建druid数据源(加载properties配置文件)
public void test3() throws Exception{
//读取配置文件,ResourceBundle的基本路径是基于类路径的,且不用带后缀
ResourceBundle resourceBundle = ResourceBundle.getBundle("jdbc");
String driver = resourceBundle.getString("jdbc.driver");
String url = resourceBundle.getString("jdbc.url");
String username = resourceBundle.getString("jdbc.username");
String password = resourceBundle.getString("jdbc.password");
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
Spring配置数据源
将DataSource的创建权交给Spring容器来完成.
从上面代码我们可以看见:
(1)数据源有无参构造方法,可以配置<bean>标签
(2)数据源中设置参数使用的是set方法,因此可以通过<property>标签来注入配置信息
但是,如果想要xml中的配置相关信息从properties文件中加载,应该怎么做??
核心要点:
<context:property-placeholder location="xx.properties"/>
<property name="" value=${key}"/>
具体步骤:
(1)首先,需要引入context命名空间和约束路径
命名空间:xmlns:context="http://www.springframework.org/schema/context"
约束路径:http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
(2)在xml中,原来写配置的地方,换成${properties中key的名字}