作者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://webptt.com/m.aspx?n=bbs/java/M.1536119093.A.9EB.html
1F:→ wawi2: TestServiceMockImpl裡面那個methodB要加override? 09/05 12:27
2F:→ zero123824: 編譯上加不加都會過 但執行時還沒跑到這個方法 不知道 09/05 12:44
3F:→ zero123824: 有沒有差別 09/05 12:44
4F:推 goodblessu: 方式很多 先加@qualifier試試 09/05 13:02
5F:推 new122851: 指定impl的優先順序 09/08 02:09
6F:→ Expsun: @Qualifier @Conditional @Primary 09/09 11:58
7F:推 marsyang1: 推樓上正解 10/15 00:22
8F:推 methodho: 依照你的需求你應該去了解 mock framework, 如 mockito 10/19 17:18