首页 数据库 mysql教程 spring中配置数据源_MySQL

spring中配置数据源_MySQL

May 30, 2016 pm 05:10 PM
数据源

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>
登录后复制

 


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

电源BI无法连接,尝试连接时遇到错误 电源BI无法连接,尝试连接时遇到错误 Feb 18, 2024 pm 05:48 PM

当PowerBI无法连接到XLS、SQL或Excel文件的数据源时,可能会遇到困难。本文将探讨可能的解决方案,以帮助您解决这一问题。如果您在连接过程中遇到错误或连接失败的情况,本文将指导您采取一些措施。因此,如果您面临这个问题,请继续阅读,我们将为您提供一些有用的建议。PowerBI中的网关连接错误是什么?PowerBI中的网关错误通常是由数据源信息与底层数据集不匹配引起的。要解决这个问题,需要确保本地数据网关上定义的数据源与PowerBI桌面中指定的数据源是准确且一致的。PowerBI无法连接

使用MyBatis实现批量Insert操作的步骤详解 使用MyBatis实现批量Insert操作的步骤详解 Feb 22, 2024 pm 08:27 PM

标题:如何使用MyBatis实现批量Insert操作MyBatis是一款优秀的持久层框架,广泛应用于Java开发中。在实际开发中,经常会遇到需要批量插入数据的情况,本文将详细介绍如何使用MyBatis来实现批量Insert操作,并附带具体的代码示例。步骤一:配置MyBatis在项目中引入MyBatis,并配置MyBatis的相关信息,包括数据库连接信息、Ma

数据源是什么意思 数据源是什么意思 Jul 25, 2022 am 11:31 AM

数据源的意思是“数据库应用程序所使用的数据库或者数据库服务器”;数据源也即数据的来源,是提供某种所需要数据的器件或原始媒体,在数据源中存储了所有建立数据库连接的信息,通过提供正确的数据源名称,可以找到相应的数据库连接。

Yii框架中的数据提取:从不同数据源获取数据 Yii框架中的数据提取:从不同数据源获取数据 Jun 21, 2023 am 11:37 AM

随着互联网的迅猛发展,数据已经成为了企业发展的重要资源。为了更好地利用数据,我们需要将数据从不同的数据源中提取出来进行分析和处理。在这篇文章中,我们将重点介绍如何在Yii框架中从不同的数据源中获取数据。一、从MySQL数据库中提取数据MySQL是目前最流行的关系型数据库之一,它的安装和使用非常简单。下面我们将介绍如何在Yii框架中从MySQL数据库中提取数据

如何在C++中集成外部数据源以丰富分析过程? 如何在C++中集成外部数据源以丰富分析过程? Jun 01, 2024 pm 05:00 PM

C++中集成外部数据源可大幅拓展数据分析能力。步骤包括:选择与目标数据源兼容的连接器,根据数据源要求建立连接,并使用SQL进行查询。一个使用ODBC连接器连接MySQL的实例显示如何提取数据结果。集成外部数据源可丰富分析过程、做出更明智的决策。

盘点20多个强大且免费的数据源,任何人都能以此来构建AI 盘点20多个强大且免费的数据源,任何人都能以此来构建AI Jun 05, 2023 pm 02:29 PM

当我们谈论当今商业领域和社会中的人工智能时,我们其实指的是机器学习。机器学习是一种应用,通过使用算法(一组指令)变得越来越擅长执行某项特定任务,因为它接触了越来越多与这项任务相关的数据。这些任务可以是任何任务,从回答问题、创建文本或图像(如ChatGPT或Dall-E等应用所能做的)到识别图像(计算机视觉)或者把自动驾驶汽车从A地导航到B地。所有这些任务都需要数据,那些想要训练自己的机器学习算法以自动执行日常任务的企业,他们需要一些数据源。有哪些类型的数据?企业数据通常分为两类——内部数据和外部

PHP PDO 与 ODBC:连接到各种数据源 PHP PDO 与 ODBC:连接到各种数据源 Feb 20, 2024 am 10:20 AM

PHPPDOPHPPDO(phpDataObjects)是一个面向对象的数据访问抽象层,允许开发者使用统一的接口连接到各种数据库管理系统(DBMS)。它提供了与数据库交互的标准方法,无论底层的DBMS是何种。PDO的优点:统一接口:PDO提供统一的api,用于连接、执行查询和获取结果,从而简化了与不同DBMS的交互。PreparedStatements:PDO支持预处理语句,这有助于防止sql注入攻击并提高性能。事务支持:PDO允许管理事务,确保数据库操作要么全部成功,要么全部失败。错误处理:P

Go语言中的分布式系统作为数据源 Go语言中的分布式系统作为数据源 May 31, 2023 pm 11:51 PM

随着互联网和大数据时代的到来,数据已经成为了人们生活中不可或缺的一部分。大型企业和组织需要处理庞大的数据集来促进业务发展。对于数据科学家和研究人员来说,寻找可靠、高效的数据源是他们的首要任务。而Go语言则成为了分布式系统作为数据源的理想选择。Go语言(简称Golang)是一种面向并发编程的编程语言。它最初由Google在2009年开发,旨在为大型应用程序提供

See all articles