我开始开发经典的Spring Boot MVC应用程序。我使用依赖项注入(使用@Service@Autowired批注)没有任何问题。

当我尝试以相同方式使用依赖项注入运行某些集成测试时,我从Junit收到以下错误消息:


org.springframework.beans.factory.UnsatisfiedDependencyException:
创建名称为“ hu.bookandwalk.RepositoryTests”的bean时出错:
通过字段“ userService”表示不满意的依赖关系;嵌套的
例外是
org.springframework.beans.factory.NoSuchBeanDefinitionException:否
类型为“ hu.bookandwalk.services.UserService”的合格Bean
可用:至少有1个符合自动装配条件的bean
候选人。依赖注释:
{@ org.springframework.beans.factory.annotation.Autowired(required = true)}


测试代码的相关部分:

package hu.bookandwalk;

...

import hu.bookandwalk.config.MyNeo4jConfig;
import hu.bookandwalk.domain.*;
import hu.bookandwalk.services.*;

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
@ContextConfiguration(classes={MyNeo4jConfig.class})
public class RepositoryTests {

    @Autowired
    Session session;

    @Autowired
    UserService userService;
...

}


hu.bookandwalk.services包中,我有一个没有注释的UserService接口和一个用UserServiceImpl注释的@Service类。

我不了解DI是否可以运行我的应用程序,而不是为什么它在测试中不起作用。正如错误消息所述,Spring Boot并没有以某种方式发现我带注释的实现类。

该测试与我的应用程序类位于同一包中:hu.bookandwalk
我所有的服务,存储库和域都位于以下位置:hu.bookandwalk.serviceshu.bookandwalk.domain,...

知道我想让测试类使userServiceImpl可被发现的哪种注释吗?

最佳答案

尝试在UserServiceImpl.class中插入@ContextConfiguration

09-11 17:34