[問題] spring中 該怎麼一個介面有兩個實作

看板java作者 ( )時間6年前 (2018/09/05 11:44), 編輯推噓4(404)
留言8則, 7人參與, 6年前最新討論串1/1
現在在開發上遇到了介面實作與繼承的問題 專案是使用標準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

09/05 12:27, 6年前 , 1F
TestServiceMockImpl裡面那個methodB要加override?
09/05 12:27, 1F

09/05 12:44, 6年前 , 2F
編譯上加不加都會過 但執行時還沒跑到這個方法 不知道
09/05 12:44, 2F

09/05 12:44, 6年前 , 3F
有沒有差別
09/05 12:44, 3F

09/05 13:02, 6年前 , 4F
方式很多 先加@qualifier試試
09/05 13:02, 4F

09/08 02:09, 6年前 , 5F
指定impl的優先順序
09/08 02:09, 5F

09/09 11:58, 6年前 , 6F
@Qualifier @Conditional @Primary
09/09 11:58, 6F

10/15 00:22, 6年前 , 7F
推樓上正解
10/15 00:22, 7F

10/19 17:18, 6年前 , 8F
依照你的需求你應該去了解 mock framework, 如 mockito
10/19 17:18, 8F
文章代碼(AID): #1RZr4rdh (java)
文章代碼(AID): #1RZr4rdh (java)