多個實現類,呼叫指定實現類

2021-10-24 18:00:56 字數 2142 閱讀 5580

場景:service介面有多個實現類,controller如何呼叫指定實現類呢?

controller層**

@controller

public class testcontroller

service介面 

/**

* @description 公共測試service

* @author bhy

* @date 2020/10/14 14:38

* @version 1.0

*/public inte***ce itestservice

介面實現類1 

/**

* @description 實現類1

* @author bhy

* @date 2020/10/14 14:39

* @version 1.0

*/@service

@primary

public class testserviceimpl1 implements itestservice

}

介面實現類2 

/**

* @description 實現類2

* @author bhy

* @date 2020/10/14 14:40

* @version 1.0

*/@service

public class testserviceimpl2 implements itestservice

}

controller層單元測試 

@runwith(springrunner.class)

@springboottest

public class testcontrollertest

}

此時service層有兩個實現類分別是testserviceimpl1testserviceimpl2

多個實現類如何區分呼叫

1. 在某乙個實現類中(此時在testserviceimpl1)新增註解@primary使用介面進行注入時會自動注入該實現類

@service

@primary

public class testserviceimpl1 implements itestservice

}

2.通過@autowired@qualifiery一起使用  value值為實現類的類名稱注意首字母小寫例如

@autowired

@qualifier(value = "testserviceimpl1")

private itestservice testservice;

3.使用@reourcename值為實現類的類名稱注意首字母小寫例如    

@resource(name = "testserviceimpl1")

private itestservice testservice;

4.@reource@service指定名稱區分  例如

@service(value = "test1")   //註解中指定名稱

public class testserviceimpl1 implements itestservice

}

@resource(name = "test1")

private itestservice testservice;

四次輸出結果均為以下內容,可以達到呼叫指定實現類的要求

class com.example.demo.service.impl.testserviceimpl1

乙個介面多個實現,指定實現類

目的 乙個介面多個實現時,根據不同的條件呼叫不用的實現 1 有如下介面 public inte ce pay2 有如下兩個實現 實現一 service weixinpay public class weixinpay implements pay 實現二 service alipay public ...

呼叫介面實現類的方式

1.當要呼叫介面的實現類時,有2種方法 1 宣告介面,實現類例項化 2 通過配置檔案的方式,用和兩個標籤,決定使用介面的那個實現類 2.遇到的問題,別人寫好使,我寫不好使 1 使用ssh開發,宣告介面 peforumcommentservice 是介面 private peforumcomments...

繼承父類並實現多個介面

package cn.ly.day.seven.twentytwo 使用介面的時候,需要注意 1.介面是沒有靜態 塊或者構造方法。2.乙個類的直接父類是唯一的,但是乙個類可以同時實現多個介面。格式 public class myinte ceimpl implements myinte cea,my...