還在用冗長的if-else或switch語句管理多個服務實現?
相信不少Spring Boot開發者都遇到過這樣的場景:需要根據不同條件動態選擇不同的服務實現。
如果告訴你可以完全擺脫條件判斷,讓Spring自動選擇合適的實現——只需要一個注解,你是否感興趣?
本文將詳細介紹這種優雅的實現方式。
?? 實際開發中的痛點
假設你在開發一個支付系統,需要支持多種支付方式:
PaypalPaymentService
StripePaymentService
RazorpayPaymentService
傳統做法是根據用戶選擇的支付方式進行條件判斷:
if (paymentType.equals("PAYPAL")) {return new PaypalPaymentService();
} else if (paymentType.equals("STRIPE")) {return new StripePaymentService();
}
? 這種寫法存在明顯問題:代碼冗余、難以維護、擴展性差。
接下來看看如何優化。
最近我們翻譯了Spring Boot和Spring AI的中文文檔,有需要的小伙伴可以收藏:
- Spring Boot 3.4中文文檔
- Spring Boot 3.5中文文檔
- Spring AI 1.0.0中文文檔
解決方案:注解 + Map容器
實現思路:
- 定義自定義注解標識不同的實現類
- 利用Spring的依賴注入機制,通過Map容器動態獲取對應的實現
步驟1:定義通用接口
public interface PaymentService {void pay(