spring中配置数据源的几种常见方式:
#mysql 数据库配置(jdbc.properties)jdbc.driverclassname=com.mysql.jdbc.driverjdbc.url=jdbc:mysql://localhost:3306/databasename?useunicode=true&characterencoding=utf-8jdbc.username=rootjdbc.password=root
1.使用spring自带的数据源org.springframework.jdbc.datasource.drivermanagerdatasource;
方式一:
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 { }}
方式二:
2.dbcp数据源;
dbcp(database connection pool)。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
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有自动回收空闲连接功能
oracle.jdbc.driver.oracledriverjdbc:oracle:thin:@localhost:1521:testrootroot
4.jndi数据源;
如果应用配置在高性能的应用服务器(如weblogic或websphere等)上,我们可能更希望使用应用服务器本身 提供的数据源。应用服务器的数据源 使用jndi开放调用者使用,spring为此专门提供引用jndi资源的 jndiobjectfactorybean类。下面是一个简单的配置:
方式一:
value值即jndi的名称
方式二:
queue/testqueue
方式三:
如果不使用jnditemplate实现initialcontext环境变量的配置,则需要jndi.properties文件(放在classpath中,一般放在src下面),内容如下
java.naming.factory.initial=org.jnp.interfaces.namingcontextfactoryjava.naming.provider.url=jnp://localhost:1099java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
方式四:
使用jnditemplate实现initialcontext环境变量的配置,例如
queue/testqueueorg.jnp.interfaces.namingcontextfactoryjnp://localhost:1099org.jboss.naming:org.jnp.interfaces