【发布时间】:2018-12-03 20:09:55
【问题描述】:
在我的 Spring Boot 2.0.2 应用程序中,我试图注入一个继承自抽象类的组件,该类实现了一个接口,但它不起作用。
代码:
组件摘要:(我需要放@Component吗?)
package app.project.service;
@Component
public abstract class AbstractStepService implements IStepService {
protected final void addTask() {
...
}
@Override
public StepDataDto launch() throws StepException {
...
}
}
界面:
package app.project.service;
public interface IStepService {
StepDataDto launch() throws StepException;
}
package app.project.service;
组件:
@Component
public class CStepServiceImpl extends AbstractStepService implements IStepService {
@PostConstruct
private void defineTasks() {
}
}
package app.project.service;
Junit 测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class CStepServiceTest {
@Autowired
@Qualifier("cStepServiceImpl")
private IStepService service;
}
package app.project;
应用:
@SpringBootApplication
@ComponentScan(basePackages ={"app.project.service"})
public class MyApplication {}
启动我的 Junit 测试时出现错误消息:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'app.project.service.IStepService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=cStepServiceImpl)}
有什么想法吗?
谢谢
【问题讨论】:
标签: spring spring-boot junit autowired