Ramnivas Laddad

Ramnivas Laddad

校友
發表的部落格文章Ramnivas Laddad

擴展 Spring Cloud

工程 | 2014 年 8 月 05 日 | ...

Spring Cloud 最有趣的特性之一是其可擴展性。 您可以擴展它以支援其他雲端、增強已支援的雲端、支援新服務、新服務連接器,而無需修改 Spring Cloud 程式碼本身。 在這篇部落格中,我們將探討此功能。 如果您尚未這麼做,請閱讀此系列中的第一篇第二篇部落格,以取得足夠的背景知識。

可擴展性的三個面向

Spring Cloud 沿著三個正交方向提供可擴展性。 您可以在其中一個方向上擴展它,而正交性確保...

以程式方式使用 Spring Cloud

工程 | 2014 年 7 月 29 日 | ...

上一篇部落格中,我向您展示如何使用Spring Cloud的 Java 配置選項來以宣告方式取得服務連接器(如果您需要,也有 XML 命名空間支援)。 在這篇部落格中,我們將仔細研究如何以程式方式使用 Spring Cloud。 這將有助於您無法使用 Java 或 XML 配置的情況。 它還將揭開 Spring Cloud 如何運作的神秘面紗,並為本系列的下一篇部落格做好準備,我們將在其中討論擴展 Spring Cloud。

要使用 Spring Cloud,我們需要存取 Cloud 類別的物件。 但是,您無法直接建立 Cloud 物件(其建構子不是 public)。 相反,您將透過 CloudFactory 取得它...

Spring Cloud 簡介

工程 | 2014 年 6 月 03 日 | ...

開發、部署和運營雲端應用程式應該像本地應用程式一樣容易(如果不是更容易的話)。 這應該是任何雲端平台、程式庫或工具背後的一個指導原則。 Spring Cloud(一個開放原始碼程式庫)使為雲端開發 JVM 應用程式變得容易。 透過它,應用程式可以輕鬆地連線到服務並發現有關雲端環境的資訊,在多個雲端中,例如 Cloud Foundry 和 Heroku。 此外,您可以將其擴展到其他雲端平台和新服務。

在這篇部落格(系列中的第一篇)中,我將介紹 Spring Cloud 並從應用程式開發人員的角度展示其用法。 我們將開發一個簡單的應用程式並部署到Cloud FoundryHeroku...

將 Cloud Foundry 服務與 Spring 搭配使用:第 2 部分 - 自動重新配置

工程 | 2011 年 11 月 04 日 | ...

如果您觀看了 Cloud Foundry 發表會的影片,您會看到我們部署了從 Spring Web Flow 範例下載的 Spring Travel 應用程式、將 MySQL 服務繫結到它,並將應用程式拖放到 STS 中的 Cloud Foundry 伺服器,而無需在應用程式本身中進行任何變更。 既然應用程式配置為使用本地資料庫,這怎麼可能呢? 這就是自動重新配置發揮作用的時候。

Cloud Foundry 致力於讓您的初始投資保持在較低的水平。 除了金錢之外,真正的投資來自開發人員的時間...

將 Cloud Foundry 服務與 Spring 搭配使用:第 1 部分 - 基礎知識

工程 | 2011 年 10 月 13 日 | ...

Cloud Foundry 中提供的服務使編寫高效且有效的應用程式成為可能。 開發人員現在可以選擇合適的服務,而無需擔心運營這些服務。 例如,應用程式的一部分可以選擇 Postgres 用於事務性存取至關重要的部分,MongoDB 用於將資料作為文件集合進行交互有意義的部分,Redis 用於鍵值是正確抽象的部分,以及 RabbitMQ 用於訊息傳遞有助於建立有效的架構。 在這個由四部分組成的部落格系列中,我們將探討 Spring 應用程式如何使用 Cloud Foundry...

網域物件相依性注入功能的新改進

工程 | 2008 年 1 月 24 日 | ...

Spring 的相依性注入 (DI) 機制允許配置在應用程式環境定義中定義的 bean。 如果您想將相同的想法擴展到非 bean 怎麼辦? Spring 對網域物件 DI的支援利用 AspectJ 織入將 DI 擴展到任何物件,即使它是由網路或 ORM 框架建立的。 這使得建立行為豐富的網域物件成為可能,因為網域物件現在可以與注入的物件協作。 在這篇部落格中,我將討論 Spring 框架在這個領域的最新改進。

網域物件 DI 背後的核心思想非常簡單:一個 AspectJ 織入的 aspect 選擇對應於符合特定規範的任何物件的建立反序列化的連接點。 對這些連接點的建議將相依性注入到正在建立或反序列化的物件中。 當然,魔鬼藏在細節中。 例如,您如何選擇對應於反序列化的連接點,或者如何僅對每個物件注入一次相依性? 透過提供一些預先編寫的...

新的 bean() 切入點

工程 | 2007 年 9 月 24 日 | ...

Spring 2.5 具有一個新的切入點指示符 -- bean(),它允許在具有匹配名稱模式的 bean 中選擇連接點。 現在可以將自動代理機制與 Spring-AspectJ 整合一起使用,即使有多個相同類型的 bean,也可以選擇特定的 bean。 早些時候,您可以使用BeanNameAutoProxyCreator來實現類似的結果;但是,該機制不適用於 Schema 樣式或 @AspectJ aspect。

除了選擇特定的 bean 之外,如果您遵循適當的命名慣例,此切入點指示符還提供了兩種有趣的方法來選擇 bean

  1. 選擇 bean 的垂直切片:如果您遵循一種慣例,其中 bean 名稱包含一個字串,指示它們從業務角度的角色,則 bean() 切入點可以根據 bean 的業務角色選擇 bean。 例如,您可以使用bean(account*)切入點來選擇所有與會計相關的 bean,例如 accountRepositoryaccountServiceaccountController,如果 bean 名稱以表示其業務功能的字串開頭。
  2. 選擇 bean 的水平切片:如果您遵循一種慣例,其中 bean 名稱包含一個字串,指示它們從架構角度的角色,則 bean() 切入點可以根據 bean 的架構角色選擇 bean。 例如,您可以使用 bean(*Repository) 來選擇所有儲存庫 bean,如果 bean 名稱以表示其架構角色的字串結尾。 如果沒有 bean() 切入點,您必須依賴套件結構或基於類型的切入點,有時這可能會有些過於嚴格。
The bean() Pointcut Designator

圖 1:使用 bean() 切入點根據其名稱選擇 bean 的水平和垂直切片

此切入點表示 Spring 特定的 AspectJ 切入點表達式語言擴展,因此僅在基於 Spring 的應用程式中才有用。 名稱模式遵循 AspectJ 名稱模式的匹配規則,其中 '*' 是唯一允許的萬用字元。 這是一個表格,顯示了一些範例切入點和它們選擇的 bean。
切入點 選擇的連接點
bean(accountRepository) 名為「accountRepository」的 bean
!bean(accountRepository) 除了「accountRepository」bean 之外的任何 bean
bean(*) 任何 bean
bean(account*) 任何名稱以「account」開頭的 bean
bean(*Repository) 任何名稱以「Repository」結尾的 bean
bean(accounting/showaccount) 名為 accounting/showaccount 的 bean(指定,例如,處理該 URL 的控制器)
bean(accounting/*) 任何名稱以「accounting/」開頭的 bean(指定,例如,處理與會計相關的 URL 的任何控制器)
bean(accounting/*/edit) 任何名稱以「accounting/」開頭且以「/edit」結尾的 bean(指定,例如,處理與會計相關的編輯操作功能的任何控制器)
bean(*dataSource) || bean(*DataSource) 任何名稱以「dataSource」或「DataSource」結尾的 bean
bean(service:name=monitoring) 名為「service:name=monitoring」的 bean

更上一層樓

VMware 提供培訓和認證,以加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部