程序员的资源宝库

网站首页 > gitee 正文

Spring配置第三方连接池(spring调用第三方接口)

sanyeah 2024-04-01 11:30:26 gitee 5 ℃ 0 评论

1.Spring配置C3P0连接池

官网:http://www.mchange.com/projects/c3p0/

步骤:

  1. 导入C3P0坐标
  2. 修改applicationContext.xml里面DataSource的class属性值, 修改属性名

实现:

  • 导入坐标
  <dependency>
    	<groupId>c3p0</groupId>
    	<artifactId>c3p0</artifactId>
    	<version>0.9.1.2</version>
  </dependency>
  • 配置数据源连接池
 <!-- 配置C3P0数据库连接池 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="jdbcUrl" value="jdbc:mysql:///itcastspring" />
	<property name="driverClass" value="com.mysql.jdbc.Driver" />
	<property name="user" value="root" />
	<property name="password" value="root" />
 </bean>
 <!-- 管理JDBC模版 -->
 <bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource" ref="dataSource" />
 </bean>

核心类:`com.mchange.v2.c3p0.ComboPooledDataSource

2.Spring配置Druid连接池

官网:http://druid.io/
步骤:

  1. 导入Druid坐标
  2. 修改applicationContext.xml里面DataSource的class属性值, 修改属性名

实现:

  • 导入坐标

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.9</version>
    </dependency>
    
  • 配置数据源连接池

    <!--注册dataSource -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/itcastspring"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
    </bean>

3.Spring配置DBCP连接池【扩展】

? 官网:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

步骤:

  1. 导入DBCP连接池坐标
  2. 修改applicationContext.xml里面DataSource的class属性值, 修改属性名
  • 导入坐标

    <dependency>
      	<groupId>commons-dbcp</groupId>
      	<artifactId>commons-dbcp</artifactId>
      	<version>1.4</version>
    </dependency>
    
  • 配置连接池

     <!-- 配置DBCP数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="url" value="jdbc:mysql:///spring_jdbc" />
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="root" />
    <property name="password" value="123456" />
    </bean>
     <!-- 管理JDBC模版 -->
    <bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource" />
    </bean>
    

    核心类:org.apache.commons.dbcp.BasicDataSource

4.Spring配置HikariCP连接池【扩展】

官网:https://github.com/brettwooldridge/HikariCP

步骤:

  1. 添加HikariCP坐标
  2. 修改applicationContext.xml里面DataSource的class属性值, 修改属性名

实现:

  • 导入HikariCP坐标

    <dependency>
       <groupId>com.zaxxer</groupId>
       <artifactId>HikariCP</artifactId>
       <version>3.1.0</version>
    </dependency>
    
  • 配置数据源连接池

     <!-- 配置HikariCP数据库连接池 -->
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    	<property name="jdbcUrl" value="jdbc:mysql:///spring_jdbc" />
    	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    	<property name="username" value="root" />
    	<property name="password" value="123456" />
    </bean>
     <!-- 管理JDBC模版 -->
    <bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource" />
    </bean>
    

    核心类:com.zaxxer.hikari.HikariDataSource

  • 为什么HikariCP为什么越来越火?

    • 效率高
    • 一直在维护
    • SpringBoot2.0 现在已经把HikariCP作为默认的连接池了
  • 为什么HikariCP被号称为性能最好的Java数据库连接池?

    • 优化并精简字节码: HikariCP利用了一个第三方的Java字节码修改类库Javassist来生成委托实现动态代理

    • 优化代理和拦截器:减少代码,代码量越少。一般意味着运行效率越高、发生bug的可能性越低.

    • 自定义集合类型ConcurrentBag:ConcurrentBag的实现借鉴于C#中的同名类,是一个专门为连接池设计的lock-less集合,实现了比LinkedBlockingQueue、LinkedTransferQueue更好的并发性能。ConcurrentBag内部同时使用了ThreadLocal和CopyOnWriteArrayList来存储元素,其中CopyOnWriteArrayList是线程共享的。ConcurrentBag采用了queue-stealing的机制获取元素:首先尝试从ThreadLocal中获取属于当前线程的元素来避免锁竞争,如果没有可用元素则再次从共享的CopyOnWriteArrayList中获取。此外,ThreadLocal和CopyOnWriteArrayList在ConcurrentBag中都是成员变量,线程间不共享,避免了伪共享(false sharing)的发生。

    • 使用FastList替代ArrayList: FastList是一个List接口的精简实现,只实现了接口中必要的几个方法。JDK ArrayList每次调用get()方法时都会进行rangeCheck检查索引是否越界,FastList的实现中去除了这一检查,只要保证索引合法那么rangeCheck就成为了不必要的计算开销(当然开销极小)。

【小结】

  1. 导入连接池坐标
  2. 改DataSource的class属性值, 配置属性名

知识点-Spring引入Properties配置文件

【目标】

掌握Spring引入Properties配置文件

【步骤】

  1. 定义jdbc.properties文件

  2. 把jdbc.properties引入到applicationContext.xml

  3. 根据key获得值, 赋值

【实现】

1.jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_day03
jdbc.username=root
jdbc.password=123456

2.在applicationContext.xml页面使用

  • 引入配置文件方式一(不推荐使用)
 <!-- 引入properties配置文件:方式一 (繁琐不推荐使用) -->
<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
	<property name="location" value="classpath:jdbc.properties" />
</bean>
  • 引入配置文件方式二【推荐使用】
 <!-- 引入properties配置文件:方式二 (简单推荐使用) -->
<context:property-placeholder location="classpath:jdbc.properties" />
  • bean标签中引用配置文件内容
 <!-- hikariCP 连接池 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
	<property name="jdbcUrl" value="${jdbc.url}" />
	<property name="driverClassName" value="${jdbc.driver}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
</bean>

注意:在使用<context:property-placeholder/>标签时,properties配置文件中的key一定要是带点分隔的。例如jdbc.url

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表