最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@RequestController之?dāng)?shù)據(jù)源與連接池使用及說明

 更新時(shí)間:2026年01月23日 09:02:23   作者:追JAVA的小菜鳥  
文章總結(jié):介紹了Spring MVC中的@Controller和@ResponseBody注解以及@RequestMapping注解的使用方法,詳細(xì)講解了數(shù)據(jù)源、連接池的概念及其在Java項(xiàng)目中的應(yīng)用,包括JNDI、DBCP、C3P0和Druid等連接池的配置和特點(diǎn)

一、@RequestController————類

  • 繼承自@Controller
  • 向頁面發(fā)送JSON格式信息
  • 相當(dāng)于@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對象以某個(gè)名稱的形式binding綁定到一個(gè)容器環(huán)境Context中,以后調(diào)用容器環(huán)境的lookup查找方法可以查找出某個(gè)名稱所綁定的Java對象。
  • 在真實(shí)的項(xiàng)目應(yīng)用中,通常是由系統(tǒng)程序或框架程序先將資源對象綁定到JNDI環(huán)境中,以后在該系統(tǒng)或框架中運(yùn)行的模塊程序就可以從JNDI環(huán)境中查找這些資源對象了。
  • 優(yōu)點(diǎn):這種方式極大的增強(qiáng)了系統(tǒng)的可維護(hù)性
  • 容器環(huán)境Context也是一個(gè)Java對象,它也可以通過一個(gè)名稱綁定到另一個(gè)容器環(huán)境Context中。這就形成了一種父子級聯(lián)關(guān)系,多個(gè)Context對象最終可以級聯(lián)成一種樹狀結(jié)構(gòu),樹中的每個(gè)Context對象中都可以綁定若干個(gè)Java對象。

Tomcat服務(wù)器在啟動(dòng)時(shí)可以創(chuàng)建一個(gè)連接到某種數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)源DataSource對象,并將該數(shù)據(jù)源對象綁定到JNDI環(huán)境中,以后在這個(gè)Tomcat服務(wù)器中運(yùn)行的Servlet和JSP程序就可以從JNDI環(huán)境中查詢出這個(gè)數(shù)據(jù)源對象進(jìn)行使用。

數(shù)據(jù)源DataSource

  • 概念:連接數(shù)據(jù)庫,創(chuàng)建Connection連接對象。
  • 是數(shù)據(jù)庫對編程提供的一個(gè)接口,每個(gè)數(shù)據(jù)源對應(yīng)一個(gè)數(shù)據(jù)庫。
  • 內(nèi)容:存儲(chǔ)了所有建立數(shù)據(jù)庫連接需要的信息。eg:username,pwd等

類似于通過指定文件名稱可以在文件系統(tǒng)中找到文件一樣,通過提供正確的數(shù)據(jù)源名稱,能找到相應(yīng)的數(shù)據(jù)庫連接。算是對數(shù)據(jù)庫的一個(gè)抽象映射。

連接池

  • 概念:存放數(shù)據(jù)庫連接對象的一個(gè)緩沖池,需要數(shù)據(jù)連接時(shí)從緩沖池中取。
  • 作用:管理數(shù)據(jù)源
  • 操作過程:當(dāng)一個(gè)線程需要用JDBC對一個(gè)數(shù)據(jù)庫操作時(shí),將從池中請求一個(gè)連接。當(dāng)這個(gè)連接使用完畢后,將返回到連接池中,等待為其他的線程服務(wù)。

連接池分類

  • DataSource用來取代DriverManager來獲取Connection,獲取速度快,同時(shí)可以大幅度提高數(shù)據(jù)庫訪問速度。
1. DBCP
  • Tomcat內(nèi)置的連接池(Tomcat Dbcp)
  • apache上的一個(gè) java連接池項(xiàng)目,也是 tomcat使用的連接池組件。單獨(dú)使用dbcp需要3個(gè)包:common-dbcp.jar,common-pool.jar,common-collections.jar
  • 特點(diǎn):DBCP沒有自動(dòng)的去回收空閑連接的功能。

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是一個(gè)開源的jdbc連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和JNDI綁定。
  • C3P0是異步操作的,緩慢的jdbc操作通過幫助進(jìn)程完成。擴(kuò)展這些操作可以有效的提升性能。目前使用它的開源項(xiàng)目有Hibernate,Spring等。
  • 特點(diǎn):C3P0有自動(dòng)回收空閑連接功能。

獲取方式

//使用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個(gè)基本信息 -->
		<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í), 一次向數(shù)據(jù)庫服務(wù)器申請多少個(gè)連接 -->
		<property name="acquireIncrement">5</property>
		<!-- 初始化數(shù)據(jù)庫連接池時(shí)連接的數(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ù)庫連接池可以維護(hù)的 Statement 的個(gè)數(shù) -->
		<property name="maxStatements">20</property>
		<!-- 每個(gè)連接同時(shí)可以使用的 Statement 對象的個(gè)數(shù) -->
		<property name="maxStatementsPerConnection">5</property>

	</named-config>
</c3p0-config>
3.Druid
  • Druid是一個(gè)開源項(xiàng)目,源碼托管在github上。
  • 阿里巴巴開源平臺(tái)上一個(gè)數(shù)據(jù)庫連接池實(shí)現(xiàn),它結(jié)合了C3P0、DBCP、PROXOOL等DB池的優(yōu)點(diǎn),同時(shí)加入了日志監(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ù)時(shí),通過找到JNDI,找到連接池,再找到連接對象和對應(yīng)的數(shù)據(jù)庫。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot2使用WebFlux函數(shù)式編程的方法

    SpringBoot2使用WebFlux函數(shù)式編程的方法

    這篇文章主要介紹了SpringBoot2使用WebFlux函數(shù)式編程的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java接口請求重試機(jī)制的幾種常見方法

    Java接口請求重試機(jī)制的幾種常見方法

    Java接口請求重試機(jī)制是保證系統(tǒng)穩(wěn)定性和容錯(cuò)能力的重要手段之一,當(dāng)接口請求發(fā)生失敗或暫時(shí)性錯(cuò)誤時(shí),通過重試機(jī)制可以提高請求的成功率,本文將詳細(xì)介紹Java接口請求重試機(jī)制的幾種常見方法,需要的朋友可以參考下
    2023-11-11
  • 使用SpringBoot2.x配置靜態(tài)文件緩存

    使用SpringBoot2.x配置靜態(tài)文件緩存

    這篇文章主要介紹了使用SpringBoot2.x配置靜態(tài)文件緩存的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring容器注入bean的五種方法逐個(gè)解析

    Spring容器注入bean的五種方法逐個(gè)解析

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例
    2023-02-02
  • 使用java + OpenCV破解頂象面積驗(yàn)證碼的示例

    使用java + OpenCV破解頂象面積驗(yàn)證碼的示例

    這篇文章主要介紹了使用java + OpenCV破解頂象面積驗(yàn)證碼的示例,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • java打印從1到100的值(break,return斷句)

    java打印從1到100的值(break,return斷句)

    java 先寫一個(gè)程序,打印從1到100的值。之后修改程序,通過使用break關(guān)鍵詞,使得程序在打印到98時(shí)退出。然后嘗試使用return來達(dá)到相同的目的
    2017-02-02
  • Netty分布式獲取異線程釋放對象源碼剖析

    Netty分布式獲取異線程釋放對象源碼剖析

    這篇文章主要為大家介紹了Netty分布式獲取異線程釋放的對象源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • spring-boot中spring-boot-maven-plugin報(bào)紅錯(cuò)誤及解決

    spring-boot中spring-boot-maven-plugin報(bào)紅錯(cuò)誤及解決

    這篇文章主要介紹了spring-boot中spring-boot-maven-plugin報(bào)紅錯(cuò)誤及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java里遍歷Map集合的多種方法總結(jié)

    Java里遍歷Map集合的多種方法總結(jié)

    Java中的Map是一種鍵值對映射的數(shù)據(jù)結(jié)構(gòu),它提供了一些常用的方法用于獲取、添加、刪除和修改元素,在Java中,有多種方式可以遍歷Map,本文將介紹其中的四種常用方式,并比較它們之間的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2024-07-07
  • SpringBoot@Aspect 打印訪問請求和返回?cái)?shù)據(jù)方式

    SpringBoot@Aspect 打印訪問請求和返回?cái)?shù)據(jù)方式

    這篇文章主要介紹了SpringBoot@Aspect 打印訪問請求和返回?cái)?shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

贵州省| 富平县| 威信县| 漠河县| 瑞金市| 固阳县| 鄱阳县| 南澳县| 淳安县| 乐清市| 灌南县| 七台河市| 新巴尔虎左旗| 荣昌县| 厦门市| 大丰市| 丰台区| 鹰潭市| 漾濞| 德江县| 兰溪市| 柳州市| 资兴市| 焉耆| 兰坪| 太原市| 通榆县| 沙坪坝区| 靖安县| 资源县| 西宁市| 公主岭市| 资溪县| 泰兴市| 监利县| 辽中县| 贵溪市| 吴江市| 锦州市| 都江堰市| 扎鲁特旗|