我开始开发经典的 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
发现吗?