首頁 資料庫 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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 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)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
電源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

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

資料來源是什麼意思 資料來源是什麼意思 Jul 25, 2022 am 11:31 AM

資料來源的意思是「資料庫應用程式所使用的資料庫或資料庫伺服器」;資料來源也是資料的來源,是提供某種所需要資料的裝置或原始媒體,在資料來源中儲存了所有建立資料庫連線的信息,透過提供正確的資料來源名稱,可以找到相應的資料庫連接。

Yii框架中的資料擷取:從不同資料來源取得數據 Yii框架中的資料擷取:從不同資料來源取得數據 Jun 21, 2023 am 11:37 AM

隨著網路的快速發展,數據成為了企業發展的重要資源。為了更好地利用數據,我們需要將數據從不同的數據來源中提取出來進行分析和處理。在這篇文章中,我們將重點放在如何在Yii框架中從不同的資料來源中取得資料。一、從MySQL資料庫中提取資料MySQL是目前最受歡迎的關係型資料庫之一,它的安裝和使用非常簡單。以下我們將介紹如何在Yii框架中從MySQL資料庫中擷取數據

盤點20多個強大且免費的資料來源,任何人都能以此來建構AI 盤點20多個強大且免費的資料來源,任何人都能以此來建構AI Jun 05, 2023 pm 02:29 PM

當我們談論當今商業領域和社會中的人工智慧時,我們其實指的是機器學習。機器學習是一種應用,透過使用演算法(一組指令)變得越來越擅長執行某項特定任務,因為它接觸了越來越多與這項任務相關的資料。這些任務可以是任何任務,從回答問題、創建文字或圖像(如ChatGPT或Dall-E等應用程式所能做的)到識別圖像(電腦視覺)或把自動駕駛汽車從A地導航到B地。所有這些任務都需要數據,那些想要訓練自己的機器學習演算法以自動執行日常任務的企業,他們需要一些資料來源。有哪些類型的數據?企業資料通常分為兩類-內部資料和外部

如何在C++中整合外部資料來源以豐富分析過程? 如何在C++中整合外部資料來源以豐富分析過程? Jun 01, 2024 pm 05:00 PM

C++中集成外部数据源可大幅拓展数据分析能力。步驟包括:選擇與目標數據源兼容的連接器,根據數據源要求建立連接,並使用SQL進行查詢。一個使用ODBC連接器連接MySQL的實例顯示如何提取數據結果。集成外部數據源可豐富分析過程、做出更明智的決策。

Go語言中的分散式系統作為資料來源 Go語言中的分散式系統作為資料來源 May 31, 2023 pm 11:51 PM

隨著網路和大數據時代的到來,數據已經成為了人們生活中不可或缺的一部分。大型企業和組織需要處理龐大的資料集來促進業務發展。對於資料科學家和研究人員來說,尋找可靠、高效的資料來源是他們的首要任務。而Go語言則成為了分散式系統作為資料來源的理想選擇。 Go語言(簡稱Golang)是一種以同時進行程式設計的程式語言。它最初由Google在2009年開發,旨在為大型應用程式提供

See all articles