Spring数据源配置【扫盲篇】
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
作者 | 一只胡说八道的猴子
来源 | urlify.cn/jEfuIz
1、Spring系列之数据源的配置
2、数据源,连接池,数据库三者的区别
连接池:这个应该都学习过,比如c3p0,druid等等,连接池的作用是为了提高程序的效率,因为频繁的去创建,关闭数据库连接,会对性能有很大的消耗,所以就有了连接池,连接池顾名思义是存储多个连接的池子,池子中的连接都是创建好的,我们只要拿来使用即可,不用的时候就归还给连接池,这就大大减少了关闭创建连接的时间,提高了效率
数据库:存储数据的地方
数据源:数据源顾名思义是数据的来源,存储了连接数据库所需要的信息,也可以说是用于管理数据库连接池,并不存储真正的数据,仅仅记录了连接哪个数据库,怎么连接。如果把数据库比作一个文件的话,那么数据源存储的就是文件的名称,可以通过文件名称来找到对应的文件,算是一个抽象的映射,一个数据库对应一个数据源,数据源可能是一个连接,也可能是一个连接池
如果你是玫瑰,他就是牛粪
呸呸呸,说错了
如果数据是水,数据库就是水库,数据源就是管道,终端用户看到的数据集是管道里流出来的水。
Spring功能这么强大,怎么可能少的了数据源呢
3、Spring配置数据源
配置步骤:
1.导入数据源的坐标与数据库驱动坐标
2.创建数据源对象
3.设置数据源的基本连接信息
4.使用数据源获取连接或归还连接
需要导入的坐标信息
junit
junit
junit
4.13
test
druid
com.alibaba
druid
1.0.9
c3p0
c3p0
c3p0
0.9.1.2
spring—context
org.springframework
spring-context
5.0.3.RELEASE
mysql
mysql
mysql-connector-java
5.1.32
我先手动配置一波,等一下再用Spring容器经行配置,大家就能看到二者的巨大差别了
手动配置数据源
druid
public void main() throws Exception{
//创建数据源
DruidDataSource druidDataSource = new DruidDataSource();
//设置连接参数
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3309/one");
druidDataSource.setUsername("root");
druidDataSource.setPassword("1234");
//获取连接对象
DruidPooledConnection connection = druidDataSource.getConnection();
System.out.println(connection);
}
c3p0
public void test2() throws Exception{
//创建数据源
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//设置连接参数
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3309/one");
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("1234");
//获取连接对象
comboPooledDataSource.getConnection();
System.out.println(comboPooledDataSource);
}
为了降低耦合性之前我们是通过读取配置文件的方法,这里我给大家重新复习一下
首先抽取要配置的信息到配置文件
右端的字符串注意不要加双引号,否则会报错,因为他默认就是字符串
jdbc.Driver=com.mysql.jdbc.Driver
jdbc.Url=jdbc:mysql://localhost:3309/one
jdbc.Username=root
jdbc.Password=1234
再读取配置文件来创建连接池
public void test3() throws Exception{
//加载路径下的properties
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
//创建数据源
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//设置连接参数
comboPooledDataSource.setDriverClass(bundle.getString("jdbc.Driver"));
comboPooledDataSource.setJdbcUrl(bundle.getString("jdbc.Url"));
comboPooledDataSource.setUser(bundle.getString("jdbc.Username"));
comboPooledDataSource.setPassword(bundle.getString("jdbc.Password"));
//获取连接对象
comboPooledDataSource.getConnection();
System.out.println(comboPooledDataSource);
}
这样的方式很好的降低了耦合性
重点来了,下面我们来讲讲如何使用Spring来配置数据源
4、Spring配置数据源
将DataSource的创建权交给Spring容器去完成
DataSource有无参构造方法,Spring默认就是通过无参构造方法实例化对象
DataSource要想使用需要通过set方法设置数据库连接信息,Spring可以通过set方法进行注入
在Spring容器中配置Bean
"dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
"driverClass" value="com.mysql.jdbc.Driver"/>
"jdbcUrl" value="jdbc:mysql://localhost:3309/one"/>
"user" value="root"/>
"password" value="1234"/>
到容器中获取资源
public void two() throws SQLException {
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
DataSource datasource = (DataSource)classPathXmlApplicationContext.getBean("datasource");
Connection connection = datasource.getConnection();
System.out.println(connection);
}
上面的方法是不是还不够方便,我们可以用更方便的,即读取配置文件的方法
我们首先引入命名空间与约束路径
命名空间:xmlns:context="http://www.springframework.org/schema/context"
约束路径:http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
容器加载配置文件
配置Bean
"dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
"driverClass" value="${jdbc.driver}">
"jdbcUrl" value="${jdbc.url}">
"user" value="${jdbc.username}">
"password" value="${jdbc.password}">
以上就是Spring配置源的一些知识,有志同道合的伙伴可以关注我或者私信我加好友一同学习章,共勉
粉丝福利:108本java从入门到大神精选电子书领取
???
?长按上方锋哥微信二维码 2 秒 备注「1234」即可获取资料以及 可以进入java1234官方微信群
感谢点赞支持下哈