作者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/cn.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