看板 java 關於我們 聯絡資訊
現在在開發上遇到了介面實作與繼承的問題 專案是使用標準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