領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多Spring 2.5 引入了一個新的切入點指示符——bean(),它允許選擇名稱模式匹配的 bean 中的連線點。現在可以使用自動代理機制以及 Spring-AspectJ 整合來選擇特定的 bean,即使存在多個相同型別的 bean。之前,您可以使用 BeanNameAutoProxyCreator 實現類似的結果;但是,該機制不適用於模式樣式或 @AspectJ 切面。
除了選擇特定的 bean,如果遵循適當的命名約定,這個切入點指示符還提供了兩種有趣的方式來選擇 bean
圖 1:使用 bean() 切入點根據 bean 名稱選擇 bean 的水平和垂直切片
此切入點代表 AspectJ 切入點表示式語言的 Spring 特定擴充套件,因此僅在基於 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 |