javascript
Spring 3.2矩阵变量是什么? - 第1部分
Spring 3.2引入了對(duì)處理“矩陣變量”的支持,并且可能像大多數(shù)開發(fā)人員一樣,我從未聽說過它們。 因此,經(jīng)過一番研究,我對(duì)這個(gè)博客的了解是什么,以及您可以如何使用它們。 和往常一樣,如果我錯(cuò)了,請(qǐng)隨時(shí)糾正我。
當(dāng)我第一次閱讀它們時(shí),會(huì)想到很多問題,例如:
- 這些是什么?
- 為什么要使用它們?
- 為什么在Spring的家伙們認(rèn)為他們很重要?
- 為什么現(xiàn)在?
這些是什么?
Spring文檔中介紹了Spring 3.2新增的矩陣變量。 這是指RFC3986和1996年的Tim Berners-Lee的文檔 。如果您使用Google Matrix URI,則不會(huì)得到太多幫助,而在您我之間,RFC總是使用枯燥的純文本以一種非常無聊的方式編寫格式,這可能會(huì)阻止人們閱讀它們。 RFC3986的相關(guān)部分是:
產(chǎn)生URI的應(yīng)用程序通常使用段中允許的保留字符來分隔特定于方案或特定于解除引用處理程序的子組件。 例如,分號(hào)(“;”)和等號(hào)(“ =”)保留字符通常用于定界適用于該段的參數(shù)和參數(shù)值。 逗號(hào)(“,”)保留字符通常用于類似目的。 例如,一個(gè)URI生產(chǎn)者可能使用諸如“ name; v = 1.1”之類的段來表示對(duì)“名稱”的1.1版的引用,而另一家URI生產(chǎn)者可能使用諸如“ name,1.1”之類的段來表示相同。 參數(shù)類型可以通過特定于方案的語義定義,但是在大多數(shù)情況下,參數(shù)的語法特定于URI的取消引用算法的實(shí)現(xiàn)。
由此,您可能會(huì)發(fā)現(xiàn)矩陣URI是將參數(shù)指定為URI一部分的一種方式。 現(xiàn)在,您可能會(huì)說,我已經(jīng)可以使用以下形式的請(qǐng)求參數(shù)來做到這一點(diǎn):
http://localhost:8080/myappname/mypath?var1=hello&var2=world就矩陣URI而言,我猜這可以轉(zhuǎn)換為:
http://localhost:8080/myappname/mypath;var1=hello;var2=world那么,他們還能給你什么呢? 讓我們退后一會(huì)兒,提出一個(gè)場(chǎng)景,我將在下一個(gè)博客中編寫一些代碼。 在這種情況下,我正在編寫一個(gè)股票/股票投資組合應(yīng)用程序,此應(yīng)用程序會(huì)收到一個(gè)HTTP GET調(diào)用,該調(diào)用作為附加的全部股票名稱和價(jià)格。
http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70;AZN=236.0;SBRY=375.50在此示例中,我有spring_3_2/matrixvars應(yīng)用程序,該應(yīng)用程序指定了三個(gè)股票名稱“ BT.A”,“ AZN”和“ SBRY”及其關(guān)聯(lián)的價(jià)格。 這涵蓋了與上述相同的場(chǎng)景; 但是,庫存數(shù)據(jù)不僅隨價(jià)格一起提供,還包括各種可選的詳細(xì)信息:價(jià)格變化,價(jià)格變化百分比等。 使用逗號(hào)“,”和分號(hào),我們可以將此附加信息添加到URI中:
http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,+10.40,+3.91;AZN=236.00,+103.00,+3.29;SBRY=375.50,+7.60,+2.07上面的URI展示了矩陣URI使您能夠?qū)?shù)據(jù)集合附加到URI的任何部分。 說集合時(shí),您還會(huì)想到可以附加的數(shù)據(jù)是可變的,并且可以出現(xiàn)在URI中的任何位置。 例如,如果完成上述URI所需的數(shù)據(jù)不完整,我可以輕松編寫:
http://localhost:8080/spring_3_2/matrixvars/stocks;BT.A=276.70,,+3.91;AZN=236.00,+103.00;SBRY=375.50…將其提交給我的申請(qǐng)仍然有效。
接下來要說明的是矩陣變量具有層次依賴性。 在上面的示例中,庫存信息(例如:BT.A = 276.70,+ 3.91)與
庫存 URI路徑的一部分。 這意味著我可以向URI的不同部分添加不同的矩陣變量:
在上面的示例中,我仍然獲得了與URI的股票部分有關(guān)的股票價(jià)格信息,但是現(xiàn)在我還添加了一些帳戶信息,通知我的應(yīng)用程序:來自英國的更老的帳戶(105號(hào)帳戶)擁有BT。 A,AZN和SBRY在他的投資組合中。 顯然,帳戶信息與我的URI的account部分有關(guān)。
為什么要使用它們?
從上一節(jié)中,我認(rèn)為您應(yīng)該能夠猜出答案。 正如Spring的伙計(jì)們所說的那樣,矩陣URI或矩陣變量為您提供了一種新的方式來處理可變數(shù)量的URI參數(shù),并能夠處理使用HTTP GET傳遞給應(yīng)用程序的數(shù)據(jù)量日益增加的復(fù)雜性。
為什么Spring家伙認(rèn)為他們很重要?
現(xiàn)在,我無法代表Spring的家伙,但是像您一樣,我可以猜測(cè)他們的想法,因此對(duì)于Spring的Guy,如果我在這里錯(cuò)了,請(qǐng)告訴我。 我想他們可能會(huì)回答這樣的問題:矩陣變量增加了Spring @RequestMapping方法可以處理的URI的靈活性,從而滿足了對(duì)越來越復(fù)雜和高度交互的Web應(yīng)用程序的需求。 他們還巧妙地填補(bǔ)了Spring軍械庫的功能差距,使Spring與已經(jīng)支持該技術(shù)的JAX-RS保持一致。
為什么現(xiàn)在
最后一個(gè)問題必須是“ 為什么現(xiàn)在”? 。 畢竟,這個(gè)想法可以追溯到1996年,那么什么使其與當(dāng)今世界相關(guān)? 我想這個(gè)問題的答案在于要求網(wǎng)絡(luò)應(yīng)用程序做什么。 高度互動(dòng)的頁面非常流行,這些頁面使用AJAX和JSON進(jìn)行更新而無需全屏刷新。 JSON提供了對(duì)信息請(qǐng)求進(jìn)行復(fù)雜回復(fù)的需求的答案,矩陣變量使您能夠構(gòu)建復(fù)雜的請(qǐng)求。 從這個(gè)意義上講,這可能只是技術(shù)時(shí)代的到來。
我現(xiàn)在只需要一些代碼來演示我的股票投資組合情況,但是下次再講。
翻譯自: https://www.javacodegeeks.com/2014/04/just-what-are-spring-3-2-matrix-variables-part-1.html
總結(jié)
以上是生活随笔為你收集整理的Spring 3.2矩阵变量是什么? - 第1部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 化妆品查备案号在哪里查(化妆品查备案)
- 下一篇: 跟踪异常–第4部分– Spring的邮件