- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个主要的 @SpringBootApplication
需要扫描特定的包以启用 JPA 存储库,因此我使用 @EnableJpaRepositories
来指定它。现在我正在实现单元测试,我只想测试 Controller 组件,所以我按照官方文档中的教程进行操作,他们使用 @WebMvcTest(MyController.class)
来测试 Controller 服务依赖。问题是这对我不起作用,因为它试图加载我在主 Spring Boot 应用程序中指定的 JpaRepositories(当我在主类中评论 @EnableJpaRepositories
时,测试运行没有问题).
我猜我需要为测试类创建一个特定的配置,这样它就可以忽略主要配置(因为我只想加载 Controller 并模拟服务层),但我不知道如何创建这样的。我尝试添加一个空配置,但它仍然失败并出现相同的错误:
@TestConfiguration
static class TestConfig {}
这是我得到的错误:
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'failureTaskHandler': Unsatisfied dependency expressed through field 'myManager'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'msgManager': Unsatisfied dependency expressed through field 'inboundManager'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'inboundManager': Unsatisfied dependency expressed through field 'messageRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageRepository' defined in com.example.MessageRepository defined in @EnableJpaRepositories declared on MonitorApplication: Cannot create inner bean '(inner bean)#45e639ee' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#45e639ee': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
还有我的测试类:
@WebMvcTest(MyController.class)
public class MyControllerTest {
@Autowired private MockMvc mvc;
@MockBean private MyService service;
// Tests here
// @Test
// public void...
}
我的 Controller 类:
@RestController
@CrossOrigin
@RequestMapping("/api")
@Slf4j
public class MyController {
@Autowired private MyService service;
@PostMapping(value = "/search", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody SearchResponse getOrders(@RequestBody SearchRequest orderSearchRequest) {
log.info("Receiving orders request...");
return service.getOrders(orderSearchRequest);
}
}
最佳答案
快速解决方案
从您的 Spring Boot 应用程序类中删除 @EnableJpaRepositories
。使用:
@SpringBootApplication
public class MainApplication {
}
代替
@SpringBootApplication
@EnableJpaRepositories
public class MainApplication {
}
在这种情况下,Spring Boot 将在类路径上找到 Spring Data JPA,并使用自动配置扫描存储库的包。
使用@EnableJpaRepositories
扫描特定包
通过@Import({ DataConfiguration.class })
使用@NikolaiShevchenko 解决方案(这是不正确的)和单独的配置,但没有显式导入它,(因为测试将显式导入配置也是)并让 Spring Boot 在包扫描期间找到您的配置。
@SpringBootApplication
public class MainApplication {
}
@Configuration
@EnableJpaRepositories(basePackages = "com.app.entities")
public class JpaConfig {
}
重要
如果您将配置放在单独的包中,请不要忘记添加 basePackages
属性。
关于java - 如何从测试中排除@EnableJpaRepositories?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62517000/
我有一个主要的 @SpringBootApplication 需要扫描特定的包以启用 JPA 存储库,因此我使用 @EnableJpaRepositories 来指定它。现在我正在实现单元测试,我只想
我正在学习如何构建 JSF 和 Spring 集成的 Web 应用程序。我使用java config来配置。问题是@EnableJpaRepositories,我应该在这个注解中放入哪个包?包中包含实
我有一个主要的 @SpringBootApplication 需要扫描特定的包以启用 JPA 存储库,因此我使用 @EnableJpaRepositories 来指定它。现在我正在实现单元测试,我只想
我有一个带有 @EnableJpaRepositories 的 jpa 配置文件注释。我将此注释值设置为 application.properties像这样的文件: @EnableJpaReposit
我一直在使用@EnableJpaRepositories我对定义特定类而不是包的机会感兴趣。这背后的原因是我正在使用多模块项目,并且目前有一个核心模块,其中包含一个单独的包中的所有存储库定义: cor
我正在使用 Spring boot 和 hibernate 构建应用程序,添加存储库后,我收到此类错误: [ERROR] Failed to execute goal org.springframew
我的应用程序有多个数据源,所以我基于这个 URL 创建了两个数据源配置类. 但是在运行 spring boot 应用程序时出现错误 Description:Field userDataRepo in
我正在尝试将一个小型 java spring boot 微服务项目拆分为一个多模块 Gradle 项目。 当我过去从事自己的项目时,我倾向于为每种类型的组件(即 Controller 、实体、存储库、
JavaDoc 读取 Configures whether to enable default transactions for Spring Data JPA repositories. Defau
我有一个带有 spring 数据 jpa 1.2.0.RELEASE 的 spring 3.2.0.M2 设置。 我也有java配置。这是我的存储库配置类。 @Configuration @Enabl
我已经提到了很多与此类似的 stackoverflow 问题。我已经尝试了所有提供的解决方案和建议。但是由于未检测到 Repository 类的 @Autowired,无论其在 Boot 应用程序文件
是否使用 @EnableJpaRepositories 或 jpa:repositories(在 xml 上)让开发人员不要使用 Spring 的 @Repository 标签?当我查看 Spring
我想外部化 @EnableJPARepositories basePackages 的配置。 下面有两个不同的示例包 com.project.ph.dao sample.project.jpa.rep
我想外部化 @EnableJPARepositories basePackages 的配置。 下面有两个不同的示例包 com.project.ph.dao sample.project.jpa.rep
我研究并找到了一个 explaination and sample code至于如何使用spring data jpa多数据源指的是在xml配置中配置多个jpa:repositories如下:
我是一名优秀的程序员,十分优秀!