我开始开发经典的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.services
,hu.bookandwalk.domain
,...知道我想让测试类使
userServiceImpl
可被发现的哪种注释吗? 最佳答案
尝试在UserServiceImpl.class
中插入@ContextConfiguration