@RequestController之數(shù)據(jù)源與連接池使用及說明
一、@RequestController————類
- 繼承自@Controller
- 向頁面發(fā)送JSON格式信息
- 相當于@Controller+@ResponseBody————在頁面顯示數(shù)據(jù)

@Controller————類
- 跳轉(zhuǎn)到頁面

@ResponseBody————類/方法
- 返回json數(shù)據(jù)
- 用于異步獲取數(shù)據(jù)——在頁面顯示數(shù)據(jù)

@RequestMapping————方法(必需?。。?/h3>
- 訪問路徑:/h1
二、數(shù)據(jù)源與連接池
JNDI
- 概念:Java Naming and Directory Interface————JAVA命名和目錄接口
- 作用:為JAVA應(yīng)用程序提供命名和目錄訪問服務(wù)的API接口。
- 詳解:將Java對象以某個名稱的形式binding綁定到一個容器環(huán)境Context中,以后調(diào)用容器環(huán)境的lookup查找方法可以查找出某個名稱所綁定的Java對象。
- 在真實的項目應(yīng)用中,通常是由系統(tǒng)程序或框架程序先將資源對象綁定到JNDI環(huán)境中,以后在該系統(tǒng)或框架中運行的模塊程序就可以從JNDI環(huán)境中查找這些資源對象了。
- 優(yōu)點:這種方式極大的增強了系統(tǒng)的可維護性
- 容器環(huán)境Context也是一個Java對象,它也可以通過一個名稱綁定到另一個容器環(huán)境Context中。這就形成了一種父子級聯(lián)關(guān)系,多個Context對象最終可以級聯(lián)成一種樹狀結(jié)構(gòu),樹中的每個Context對象中都可以綁定若干個Java對象。
Tomcat服務(wù)器在啟動時可以創(chuàng)建一個連接到某種數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)源DataSource對象,并將該數(shù)據(jù)源對象綁定到JNDI環(huán)境中,以后在這個Tomcat服務(wù)器中運行的Servlet和JSP程序就可以從JNDI環(huán)境中查詢出這個數(shù)據(jù)源對象進行使用。
數(shù)據(jù)源DataSource
- 概念:連接數(shù)據(jù)庫,創(chuàng)建Connection連接對象。
- 是數(shù)據(jù)庫對編程提供的一個接口,每個數(shù)據(jù)源對應(yīng)一個數(shù)據(jù)庫。
- 內(nèi)容:存儲了所有建立數(shù)據(jù)庫連接需要的信息。eg:username,pwd等
類似于通過指定文件名稱可以在文件系統(tǒng)中找到文件一樣,通過提供正確的數(shù)據(jù)源名稱,能找到相應(yīng)的數(shù)據(jù)庫連接。算是對數(shù)據(jù)庫的一個抽象映射。
連接池
- 概念:存放數(shù)據(jù)庫連接對象的一個緩沖池,需要數(shù)據(jù)連接時從緩沖池中取。
- 作用:管理數(shù)據(jù)源
- 操作過程:當一個線程需要用JDBC對一個數(shù)據(jù)庫操作時,將從池中請求一個連接。當這個連接使用完畢后,將返回到連接池中,等待為其他的線程服務(wù)。
連接池分類
- DataSource用來取代DriverManager來獲取Connection,獲取速度快,同時可以大幅度提高數(shù)據(jù)庫訪問速度。
1. DBCP
- Tomcat內(nèi)置的連接池(Tomcat Dbcp)
- apache上的一個 java連接池項目,也是 tomcat使用的連接池組件。單獨使用dbcp需要3個包:common-dbcp.jar,common-pool.jar,common-collections.jar
- 特點:DBCP沒有自動的去回收空閑連接的功能。
DBCP配置文件——dbcp.properties
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true&useServerPrepStmts=false username=root password=abc123
2. C3P0
- C3P0是一個開源的jdbc連接池,它實現(xiàn)了數(shù)據(jù)源和JNDI綁定。
- C3P0是異步操作的,緩慢的jdbc操作通過幫助進程完成。擴展這些操作可以有效的提升性能。目前使用它的開源項目有Hibernate,Spring等。
- 特點:C3P0有自動回收空閑連接功能。
獲取方式
//使用C3P0數(shù)據(jù)庫連接池的配置文件方式,獲取數(shù)據(jù)庫的連接:推薦
private static DataSource cpds = new ComboPooledDataSource("helloc3p0");
public static Connection getConnection2() throws SQLException{
Connection conn = cpds.getConnection();
return conn;
}
c3p0配置文件——c3p0.properties
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-config name="helloc3p0"> <!-- 獲取連接的4個基本信息 --> <property name="user">root</property> <property name="password">abc123</property> <property name="jdbcUrl">jdbc:mysql:///test</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 涉及到數(shù)據(jù)庫連接池的管理的相關(guān)屬性的設(shè)置 --> <!-- 若數(shù)據(jù)庫中連接數(shù)不足時, 一次向數(shù)據(jù)庫服務(wù)器申請多少個連接 --> <property name="acquireIncrement">5</property> <!-- 初始化數(shù)據(jù)庫連接池時連接的數(shù)量 --> <property name="initialPoolSize">5</property> <!-- 數(shù)據(jù)庫連接池中的最小的數(shù)據(jù)庫連接數(shù) --> <property name="minPoolSize">5</property> <!-- 數(shù)據(jù)庫連接池中的最大的數(shù)據(jù)庫連接數(shù) --> <property name="maxPoolSize">10</property> <!-- C3P0 數(shù)據(jù)庫連接池可以維護的 Statement 的個數(shù) --> <property name="maxStatements">20</property> <!-- 每個連接同時可以使用的 Statement 對象的個數(shù) --> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>
3.Druid
- Druid是一個開源項目,源碼托管在github上。
- 阿里巴巴開源平臺上一個數(shù)據(jù)庫連接池實現(xiàn),它結(jié)合了C3P0、DBCP、PROXOOL等DB池的優(yōu)點,同時加入了日志監(jiān)控,可以很好的監(jiān)控DB池連接和SQL的執(zhí)行情況,可以說是針對監(jiān)控而生的DB連接池,只要在web.xml中或spring的配置文件中加以配置即可。
- 據(jù)說是目前最好的連接池
Druid配置文件——druid.properties
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true username=root password=123456 driverClassName=com.mysql.jdbc.Driver initialSize=10 maxActive=20 maxWait=1000 filters=wall
總結(jié)
- 數(shù)據(jù)源連接數(shù)據(jù)庫,創(chuàng)建連接對象。
- 連接池是用來管理池中的連接對象。
連接池就像數(shù)據(jù)源的代理人,我們需要連接直接找連接池要,不用的連接也是直接還給連接池。
- 數(shù)據(jù)源:水管
- 連接池:水站
- 數(shù)據(jù)庫:水站源頭
- JNDI:水站門牌
獲取數(shù)據(jù)時,通過找到JNDI,找到連接池,再找到連接對象和對應(yīng)的數(shù)據(jù)庫。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot2使用WebFlux函數(shù)式編程的方法
這篇文章主要介紹了SpringBoot2使用WebFlux函數(shù)式編程的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
java打印從1到100的值(break,return斷句)
java 先寫一個程序,打印從1到100的值。之后修改程序,通過使用break關(guān)鍵詞,使得程序在打印到98時退出。然后嘗試使用return來達到相同的目的2017-02-02
spring-boot中spring-boot-maven-plugin報紅錯誤及解決
這篇文章主要介紹了spring-boot中spring-boot-maven-plugin報紅錯誤及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
SpringBoot@Aspect 打印訪問請求和返回數(shù)據(jù)方式
這篇文章主要介紹了SpringBoot@Aspect 打印訪問請求和返回數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

