場景: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層有兩個實現類分別是testserviceimpl1和testserviceimpl2
多個實現類如何區分呼叫
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...