• spring中配置数据源


    spring中配置数据源的几种常见方式: mysql 数据库配置(jdbc properties)jdbc driverClassName=com mysql jdbc Driverjdbc url=jdbc:mysql: localhost:3306 databaseName?useUnicode=true&characterEncodi

    spring中配置数据源的几种常见方式:
     
    #mysql 数据库配置(jdbc.properties)  jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root
     
     
    1.使用spring自带的数据源org.springframework.jdbc.datasource.DriverManagerDataSource;
     
    方式一:
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="/WEB-INF/jdbc.properties" />  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
     
    p标记需要:xmlns:p="http://www.springframework.org/schema/p"
     
    DriverManagerDataSource源码实现:
     
    public class DriverManagerDataSource extends AbstractDriverBasedDataSource {  public DriverManagerDataSource() {   }  public DriverManagerDataSource(String url) {  }  public DriverManagerDataSource(String url, String username, String password) {  }  public DriverManagerDataSource(String url, Properties conProps) {  }  public void setDriverClassName(String driverClassName) {  }  protected Connection getConnectionFromDriver(Properties props) throws SQLException {  }  protected Connection getConnectionFromDriverManager(String url, Properties props) throws SQLException {  } } 
    方式二:
     
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" />    <property name="username" value="root" />    <property name="password" value="root" />  </bean>   
    2.DBCP数据源;
     
    DBCP(DataBase connection pool)。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
     
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">   <property name="driverClassName" value="${jdbc.driverClassName}" />   <property name="url" value="${jdbc.url}" />   <property name="username" value="${jdbc.username}" />   <property name="password" value="${jdbc.password}" /> </bean> 
    DBCP实现:
     
    class JdbcUtil { private static BasicDataSource bds; static { if(bds==null) { bds= new BasicDataSource(); } //分别设置数据库的连接参数 bds.setDriverClassName(); bds.setUrl(); bds.setUsername(); bds.setPassword(); } public static Connection getConnection() { return bds.getConnection(); } 
     
    3.C3P0数据源;
    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的有Hibernate,Spring等。
    依赖jar包:c3p0-0.9.1.jar、c3p0-0.9.1.2.jar、c3p0-0.9.1-pre6.jar
    c3p0与dbcp区别:
    dbcp没有自动回收空闲连接的功能
    c3p0有自动回收空闲连接功能
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property> <property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:Test</value></property> <property name="user"><value>root</value></property> <property name="password"><value>root</value></property> <!--连接池中保留的最小连接数。--> <property name="minPoolSize" value="10" /> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize" value="100" /> <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --> <property name="maxIdleTime" value="1800" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement" value="3" /> <property name="maxStatements" value="1000" /> <property name="initialPoolSize" value="10" /> <!--每60秒检查所有连接池中的空闲连接。Default: 0 --> <property name="idleConnectionTestPeriod" value="60" /> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts" value="30" /> <property name="breakAfterAcquireFailure" value="true" /> <property name="testConnectionOnCheckout" value="false" /> </bean> 
    4.JNDI数据源;
     
    如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身 提供的数据源。应用服务器的数据源 使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的 JndiObjectFactoryBean类。下面是一个简单的配置:
     
    方式一:
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">   <property name="jndiName" value="java:comp/env/jdbc/bbt"/>   </bean>
    value值即JNDI的名称
    方式二:
     
    <bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource">   <property name="jndiName">      <value>queue/testQueue</value>   </property> </bean>
     
    方式三:
     
    如果不使用JndiTemplate实现InitialContext环境变量的配置,则需要jndi.properties文件(放在classpath中,一般放在src下面),内容如下
     
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    方式四:
     
    使用JndiTemplate实现InitialContext环境变量的配置,例如
     
     
    <bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource"> <property name="jndiName"> <value>queue/testQueue</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop> <prop key="java.naming.provider.url">jnp://localhost:1099</prop> <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop> </props> </property> </bean>
  • 相关阅读:
    Linux下的文件批量转换为UTF8编码-enca
    【转】valgrind的简介以及安装
    springboot2.0整合logback日志(详细)
    springboot整合redis
    用Thymeleaf在实际项目中遇到的坑
    RedisTemplate和StringRedisTemplate的区别
    @EnableCircuitBreaker熔断超时机制
    eclipse转到idea过程中的基本设置...
    java.lang.NoSuchMethodError
    springcloud服务提供producer and 服务调用consumer
  • 原文地址:https://www.cnblogs.com/originate918/p/6513446.html
Copyright © 2020-2023  润新知