search
HomeDatabaseMysql Tutorialspring中配置数据源_MySQL

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>

 


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
电源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多个强大且免费的数据源,任何人都能以此来构建AIJun 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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software