zoukankan      html  css  js  c++  java
  • Spring学习笔记(四) DataSource

    DataSource是一个接口(interface) javax.sql.DataSource,在java文件中引入DataSource对应的包

    Spring中使用的是org.apache.commons.dbcp.BasicDataSource

    Dbcp(Data Base Connection Pool)

    在本文中将介绍两种配置Spring DataSource的方式

        1à基础配置方式

        2àPlanceHolder(占位符)配置方式

    基础配置方式(以MySQL为例)

    1. <bean id="dataSource" //要注入的DataSource,在java文件中有对应的DataSource成员变量
    2. class="org.apache.commons.dbcp.BasicDataSource"
    3. destroy-method="close">
    4.  
    5. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    6. <property name="url" value="jdbc:mysql://localhost:3306/spring" />
    7. <property name="username" value="root" />
    8. <property name="password" value="admin" />
    9. </bean>

    上述配置MySQL的方式可以从Spring的官方参考文档中找各种相关数据库的配置示例。

    DataSource注入

    1. @Component("u")
    2. public class UserDAOImpl implements UserDAO {
    3.  
    4.     private DataSource dataSource;
    5.    public void save(User user) {
    6.         try {
    7.         Connection conn = dataSource.getConnection();
    8.         String sql = "insert into user values(null,'wenlonghor')";
    9.         conn.createStatement().executeUpdate(sql);
    10.         } catch (SQLException ex) { Logger.getLogger(UserDAOImpl.class.getName()).log(Level.SEVERE, null, ex);
    11.         }
    12.       System.out.println("user saved!");
    13.    }
    14.  
    15.     public DataSource getDataSource() {
    16.         return dataSource;
    17.     }
    18.    @Resource(name="dataSource") //这里如果在beans.xml中对应的名字和成员变量的名字一样,name属性可以不用标注
    19.     public void setDataSource(DataSource dataSource) {
    20.         this.dataSource = dataSource;
    21.     }
    22. }

    从而,Spring在初始化beans的时候会把beans.xml中的DataSource注入到UserDAOImpl中的DataSource属性中。从而在使用数据库时,使用

    DataSource.getConnection()即可获得connection对象。

    PlanceHolder(占位符)配置方式

    1. <bean
    2. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    3.    <property name="locations">
    4.       <value>classpath:jdbc.properties</value>
    5.    </property>
    6. </bean>
    7.  
    8. <bean id="dataSource" destroy-method="close"
    9.    class="org.apache.commons.dbcp.BasicDataSource">
    10.    <property name="driverClassName"
    11.       value="${jdbc.driverClassName}" />
    12.    <property name="url" value="${jdbc.url}" />
    13.    <property name="username" value="${jdbc.username}" />
    14.    <property name="password" value="${jdbc.password}" />
    15. </bean>

    代码中第四行设置Spring搜索jdbc.properties路径;8-14行中的设计同基本的Spring DataSource类似,只不过value的获取是从jdbc.properties文件中获取

    jdbc.properties文件就是一个键值对,示例如下:

    1. jdbc.driverClassName=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/spring
    3. jdbc.username=root
    4. jdbc.password=admin

    dbcp.BasicDataSource

    1. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    2. <property name="url" value="jdbc:mysql://localhost:3306/spring" />
    3. <property name="username" value="root" />
    4. <property name="password" value="admin" />
    5. <property name="initialSize" value="10" /> //初始化连接
    6. <property name="maxIdle" value="20" />//最大空闲连接数
    7. <property name="minIdle" value="10" />
    8. <property name="MaxActive" value="50" />//最大连接数
    9. <property name="logAbandoned" value="true" />//是否在自动回收超时连接的时候打印链接超时连接错误
    10. <property name="removeAbandoned" value="true" />//是否自动回收超时连接
    11. <property name="removeAbandonedTimeout" value="180" />//超时时间,单位毫秒
    12. <property name="maxWait" value="1000" />//超时等待时间
  • 相关阅读:
    作为前端开发兼任产品专员是一种咋样的体验
    css忽略某一层的存在:pointer-events:none
    响应式网站对百度友好关键
    移动站点对百度友好全解
    如何布局您的PC站和移动站,并表达两者之间内容的对应关系
    猫眼电影App抓包获取评论数据接口
    字符串模拟大数相加——Java实现
    计算机网络知识小结
    二叉树与双向链表问题
    算法编程题积累(4)——腾讯笔试"有趣的数字“问题
  • 原文地址:https://www.cnblogs.com/wenlonghor/p/3296069.html
Copyright © 2011-2022 走看看