Spring之策略模式的解決方案

2021-10-02 06:26:28 字數 507 閱讀 7965

1.byname 切換bean的name

2.@qualifier指定bean

3.有選擇的只注入乙個bean——注釋掉某些bean上的@component註解

4.使用@primary

第1種方案需要在源**裡改bean的名字,不推薦。前三種可選但是並不推薦,如果只是寫業務**,所有的**都是你自己寫的,當然可以每個方案隨意使用。第4種方案,@primary的意思是優先,標註了@primary的實現類會優先被注入到容器。這種方案使用的情況是比較多的。比如,當你要開發乙個庫可能被用到很多專案中,假如原來庫里有3個實現類,現在提供了乙個介面,允許自己去擴充套件,這時候你自己新加了乙個實現類,想要覆蓋原來庫里的實現類,這時候在自己寫的實現類上標註@primary就會提高它的優先順序,當整個系統執行的時候就會注入你自己擴充套件的實現類。

以上幾種方案是比較容易想到的,更好的方案還是使用條件註解。之前的一篇文章是對條件註解的詳細介紹。

策略模式及Spring整合策略模式

抽象策略類 inte ce sortservice 具體策略類 class insertionsortserviceimpl implements sortservice else arr j 1 tmp return arr 氣泡排序 class bubblesortserviceimpl imp...

策略模式 Spring消除if else

為了消除if else 最近想把訊息服務的幾種下發方式通過策略模式整理一下,因為用的spring,直接上 public inte ce imessageservice component public class iemailserviceimpl implements imessageservic...

Spring整合策略設計模式

簡單策略設計模式詳解 策略頂級介面 author zrh date 2020 12 23 12 00 策略實現的抽象方法 param t void insertorupdate t t 策略實現類,並自定義bean名 author zrh vesion 1.2.0 time 2020 12 23 1...