我有以下错误:
Parameter 0 of constructor in com.yyy.zzz.xxx.service.ControlService required a bean of type 'com.yyy.zzz.xxx.service.composeXML.ComposeCounterService' that could not be found.
通常这是因为我忘记注释服务或 界面,但是我整个上午一直在上课,找不到 任何缺少的注释..
此时的界面只是:
@Component
public interface ComposeCounterService {
CLASSX init(List<YYY> owners) throws JAXBException;
}
和隐含服务如下,并且在这种情况下包含init()方法。
@Service
public class ComposeCounterImpl implements ComposeCounterService {
/*** loots of code
}
和ApplicationConfig文件位于服务包上方一层。在此信息中被标记为“ XXX”。
它包含以下软件包扫描:
@SpringBootApplication
scanBasePackages = {"com.yyy.zzz.xxx")
我还尝试了一系列扫描,例如:
scanBasePackages = {"com.yyy.zzz.xxx", "com.yyy.zzz.xxx.service.composeXML"})
并且在.service之后没有composeXML 这些都不起作用。
我非常确定我在这里缺少任何东西,请发送帮助。
编辑: 注射方式:
private final ComposeCounterService composeCounterService;
public ControlService(ComposeCounterService composeCounterService) {
this.composeCounterService = composeCounterService;
}
答案 0 :(得分:2)
错误的导入是:
import org.jvnet.hk2.annotations.Service;
正确的是:
import org.springframework.stereotype.Service;
如果仅让您的IDE建议导入,然后按Enter键而不阅读它添加的内容,则为结果。
答案 1 :(得分:1)
由于com.yyy.zzz.xxx.service
位于此包中,因此需要在scanBasePackages
属性中添加包ControlService
。
尝试一下,让我知道是否还有其他问题
-编辑
从@Component
中删除interface ComposeCounterService
(因为接口永远不会初始化)
现在将bean名称命名为Service类:
@Service("composeCounterImpl")
public class ComposeCounterImpl implements ComposeCounterService {
/*** loots of code
}
现在将您的构造函数定义为:
@Autowired
public ControlService(@Qualifier("composeCounterImpl") ComposeCounterService composeCounterService) {
this.composeCounterService = composeCounterService;
}
P.S:确保组件扫描中的所有功能都可用
答案 2 :(得分:1)
您是否在ComposeCounterService字段上使用了@Autowired
?
如果是这样;也许可以尝试在@ComponentScan
上方使用@SpringBootApplication
希望这会有所帮助。
欢呼声
答案 3 :(得分:1)
我是个白痴……
人们,请务必检查您的进口商品... 我什至忽略了这一点,只粘贴了无法解决问题的代码...
我为@service批注导入了错误。这就是问题的根本原因。 只花了几个小时就非常生气地调试了。