作者zero123824 ( )
看板java
標題[問題] spring中 該怎麼一個介面有兩個實作
時間Wed Sep 5 11:44:50 2018
現在在開發上遇到了介面實作與繼承的問題
專案是使用標準spirng mvc架構
目的是想要再創一個新的類別,繼承已經實作的類別
使用其中的幾個方法,並改寫另外一個方法
Service介面
public interface TestService {
public void methodA();
public void methodB();
}
實作1
@Service
public class TestServiccImpl implements TestService {
@Override
public void methodA(){
---實作內容----
}
@Override
public void methodB(){
---實作內容-----
}
}
現在想繼承這個TestServiccImpl類別
使用裡面的methodA方法 並且改寫methodB
@Service
public class TestServiceMockImpl extends TestServiccImpl {
@Override
public void methodB(){
---改寫的內容---
}
}
問題出現
public class TestClass {
@Autowired
private TestService param;
或是
private TestServiceMockImpl = new TestServiceMockImpl();
}
都是跳出NoUniqueBeanDefinitionException
訊息是說只能有一個implemt實作 但是卻找到兩個
想請問要怎麼設定才能解決這個問題?
或是該如何設計才能達到我的目的呢
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.33.30
※ 文章網址: https://www.ptt.cc/bbs/java/M.1536119093.A.9EB.html
→ wawi2: TestServiceMockImpl裡面那個methodB要加override? 09/05 12:27
→ zero123824: 編譯上加不加都會過 但執行時還沒跑到這個方法 不知道 09/05 12:44
→ zero123824: 有沒有差別 09/05 12:44
推 goodblessu: 方式很多 先加@qualifier試試 09/05 13:02
推 new122851: 指定impl的優先順序 09/08 02:09
→ Expsun: @Qualifier @Conditional @Primary 09/09 11:58
推 marsyang1: 推樓上正解 10/15 00:22
推 methodho: 依照你的需求你應該去了解 mock framework, 如 mockito 10/19 17:18