Spring - 找不到默认构造函数

时间:2017-11-03 07:46:12

标签: java spring

我有一个看起来像这样的课程:

@Service("myService")
public class MyServiceImpl {

    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

我还有一个看起来像这样的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
    MyServiceImpl.class})
...

我得到了这个例外:

 Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire 
field: private org.springframework.messaging.simp.SimpMessagingTemplate 
myPackage.MyServiceImpl.simpMessagingTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.messaging.simp.SimpMessagingTemplate] found for dependency: 
expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: 
{@org.springframework.beans.factory.annotation.Autowired(required=true)}

有人知道我能做些什么才能让它工作,SimpMessagingTemplate没有默认的构造函数。

2 个答案:

答案 0 :(得分:1)

SimpMessagingTemplate似乎没有默认构造函数,或者没有使用@Component(或@Service@Component的其他子类注释);或两者。 请检查默认构造函数是否可用,并将该类配置为Spring bean。

答案 1 :(得分:-1)

它与缺少构造函数无关,但是Spring无法找到适当的bean来注入你的测试类,

我看到的两个选项来解决它

  1. @ContextConfiguration(classes = { MyServiceImpl.class,SimpMessagingTemplate.class})
  2. 添加@mock SimpMessagingTemplate simpMessagingTemplate;到你的考试班。