spring数据源

包含三部分内容

1.spring jdbc

2. spring datasource

3.spring Connection pooling

完整的项目请往百度云盘下载:

测试方法

package com.guo.dataSourceDemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import com.alibaba.druid.pool.DruidDataSource;

public class JunitCase {

	@Test//	1.spring jdbc
	public void test(){
//		a.连接字符串
		String url = "jdbc:mysql://localhost:3306/yun?characterEncoding=UTF8"
				+ "&user=root&password=centos"
				+ "&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false";
		Connection con = null;
		Statement stmt = null;
		ResultSet result = null;
		try {
//			b.注册驱动
			Class.forName("com.mysql.jdbc.Driver");
//			c.获取连接
			con = DriverManager.getConnection(url);
//			d.获取句柄
			stmt = con.createStatement();
			String query = "select * from eac_core_biz";
//			e.执行语句
			result = stmt.executeQuery(query);
//			f.获取结果
			while(result.next()){
				String id = result.getString(1);
				String biz = result.getString(2);
				String name = result.getString(3);
				System.out.println("id:"+id+",biz:"+biz+",name:"+name);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
//			g.关闭连接
			closeResultSet(result);
			closeStatement(stmt);
			closeConnection(con);
		}

	}

	@Test //2. spring datasource
	public void test1(){
		ApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
		DriverManagerDataSource ds = (DriverManagerDataSource) context.getBean("dataSource");

		Connection con = null;
		Statement stmt = null;
		ResultSet result = null;

		try {
			con = ds.getConnection();
			stmt = con.createStatement();
			String query = "select * from eac_core_biz";
			result = stmt.executeQuery(query);
			while(result.next()){
				String id = result.getString(1);
				String biz = result.getString(2);
				String name = result.getString(3);
				System.out.println("id:"+id+",biz:"+biz+",name:"+name);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			closeResultSet(result);
			closeStatement(stmt);
			closeConnection(con);
		}
	}

	@Test //3.spring Connection pooling
	public void test2(){
		ApplicationContext context = new ClassPathXmlApplicationContext("spring-pool.xml");
		DruidDataSource ds = (DruidDataSource) context.getBean("dataSource");

		Connection con = null;
		Statement stmt = null;
		ResultSet result = null;

		try {
			con = ds.getConnection();
			stmt = con.createStatement();
			String query = "select * from eac_core_biz";
			result = stmt.executeQuery(query);
			while(result.next()){
				String id = result.getString(1);
				String biz = result.getString(2);
				String name = result.getString(3);
				System.out.println("id:"+id+",biz:"+biz+",name:"+name);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			closeResultSet(result);
			closeStatement(stmt);
			closeConnection(con);
		}
	}

	public void closeResultSet(ResultSet result){
		if(result!=null){
			try {
				result.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public void closeStatement(Statement stmt){
		if(stmt!=null){
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
	public void closeConnection(Connection con){
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

}

  

application.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/yun
jdbc.username=root
jdbc.password=centos

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd ">

    <bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/yun?characterEncoding=UTF8" />
        <property name="username" value="root" />
        <property name="password" value="centos" />
    </bean>  

</beans>

spring-pool.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd ">

 <bean id="propertyConfigure"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>application.properties</value>
   </list>
  </property>
 </bean>

 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
  init-method="init" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <!-- 配置初始化大小、最小、最大 -->
  <property name="initialSize" value="1" />
  <property name="minIdle" value="1" />
  <property name="maxActive" value="10" />

  <!-- 配置获取连接等待超时的时间 -->
  <property name="maxWait" value="10000" />

  <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  <property name="timeBetweenEvictionRunsMillis" value="60000" />

  <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  <property name="minEvictableIdleTimeMillis" value="300000" />

  <property name="testWhileIdle" value="true" />

  <!-- 这里建议配置为TRUE,防止取到的连接不可用 -->
  <property name="testOnBorrow" value="true" />
  <property name="testOnReturn" value="false" />

  <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
  <property name="poolPreparedStatements" value="true" />
  <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

  <!-- 这里配置提交方式,默认就是TRUE,可以不用配置 -->

  <property name="defaultAutoCommit" value="true" />

  <!-- 验证连接有效与否的SQL,不同的数据配置不同 -->
  <property name="validationQuery" value="select 1 " />
  <property name="filters" value="stat" />
  <property name="proxyFilters">
   <list>
    <ref bean="logFilter" />
   </list>
  </property>
 </bean>

 <bean id="logFilter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
  <property name="statementExecutableSqlLogEnable" value="false" />
 </bean>
</beans>
时间: 2024-12-19 12:25:21

spring数据源的相关文章

Spring 数据源配置二:多数据源

通过上一节  Spring 数据源配置一: 单一数据源  我们了解单一数据源的配置, 这里我们继续多个数据源的配置 如下(applicationContent.xml 内容) 一:  Spring  配置: <!-- MYSQL 配置 --> <bean id="mysqlDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <p

spring 数据源动态切换 与dubbo服务

1:问题描述 项目用了spring数据源动态切换,服务用的是dubbo.在运行一段时间后程序异常,更新操作没有切换到主库上.这个问题在先调用读操作后再调用写操作会出现.经分析原因有3: 第一:当程序运行一段时间后调用duboo服务时,读操作与写操作有可能会在一个线程里,当这种情况出现时 2:数据源配置 <idclass>    <name>       <key-type>          <keyvalue-ref/>          <keyv

Spring 数据源

1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <propert

配置Spring数据源遇到的那些坑。。。

作为一名Sping初学者,今天第一次配置Spring数据源就遇到好几个坑人的地方,记录下来做个备忘. 1. Mon Nov 27 21:42:01 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection

Spring 数据源配置三:多数据源

在上一节中,我们讲述了多数据的情况: 1. 数据源不同(数据库厂商不同, 业务范围不同, 业务数据不同) 2. SQL mapper 文件不同, 3. mybatis + 数据方言不同 即最为简单的多数据, 将多个数据源叠加在一起,不同service--->dao--->sessionFactory; 如果上述的所有条件都相同,仅仅是数据的的多个拷贝情况,想做主备(读写分离),那我们当然可以用2套复制的代码和配置,但是显然不是最佳的实现方式. 这里,我们就讲解一下多数据源的读写分离,怎么实现.

Spring 数据源配置一:单一数据源

最近遇到一个项目,需要访问都多个数据源,并且数据库是不同厂商(mysql,  sqlserver). 所以对此做了一些研究,这里咱们采用渐进的方式来展开,先谈谈单一数据源配置.(稍后有时间会陆续补充其他文章) 先上代码吧: 1.   database.properties 配置文件(配置多个数据源的 属性值) 1 #MYSQL 2 mysql.jdbc.driverClassName=com.mysql.jdbc.Driver 3 mysql.jdbc.url=jdbc:mysql://loca

spring数据源配置

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!--系统计划任务--> <bean id="hibernat

spring(16)------spring的数据源配置

在spring中,通过XML的形式实现数据源的注入有三种形式. 一,使用spring自带的DriverManagerDataSource 使用DriverManagerDataSource配置数据源与直接使用jdbc在效率上没有多大的区别,使用DriverManagerDataSource配置数据源 的代码实例如下,这里重点研究spring的数据源配置,就采用spring编程式事务处理来来研究数据源的配置. 所需要的jar包和spring编程式配置:http://blog.csdn.net/yh

复习Spring第三课--数据源配置的多种方式

spring数据源配置可以说分为:spring容器自带连接池.项目中创建连接池.服务器创建连接池三种 一.spring容器自带连接池   Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中.这个类实现了javax.sql.DataSource接口,但 它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接.因此,这个数据