小编Dan*_*gal的帖子

Spring Boot @WebIntegrationTest和TestRestTemplate - 是否可以回滚测试事务?

我和春天有数据休息一个春天启动应用程序,我使用@WebIntegrationTest伴随着TestRestTemplate我的集成测试.测试的基类看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles(profiles = "test")
@SpringApplicationConfiguration(classes = Application.class)
@Transactional
@TransactionConfiguration
@WebIntegrationTest("server.port: 0")
public abstract class IntegrationTest {

   ...

}
Run Code Online (Sandbox Code Playgroud)

我通过使用对资源TestRestTemplate执行POST请求来测试实体的创建.问题是,即使我的测试被配置为事务性的,也不会回滚在数据库上持久保存实体的事务,因此实验在测试后仍保留在数据库中.我有点明白,因为在测试中回滚的事务与持久化实体的事务不同.

现在我的问题是,有没有办法回滚通过RestTemplate测试方法发出的请求触发的事务?

spring spring-test spring-data-rest spring-boot

8
推荐指数
1
解决办法
5409
查看次数

带有多个调度程序servlet的Spring Boot(JAR),用于使用Spring Data REST的不同REST API

我有一个使用Spring Boot生成可执行JAR的项目,该JAR使用Spring Data REST公开REST API.它还与Spring Security OAuth集成.这很好.我的问题如下,

我希望只有当具有JPA存储库的对应JAR位于类路径中(它已被定义为依赖项)时,我才想要启用REST API的不同模块.

问题是我希望他们彼此独立.我希望能够在具有不同映射的不同调度程序servlet下为它们提供服务,因此我可以为每个映射指定不同的baseUri,并为资源发现提供不同的根URL.

我会试着让它更清楚:

  • API模块A:

    • 包含例如资源X和Y的XRespository和YRespository的JAR.
    • 调度程序servlet A.
    • Servlet映射:/ api/moduleA /
    • Spring Data REST的基URI:/ api/moduleA /
    • 如果我检查URL/api/moduleA /我应该发现资源X和Y.
  • API模块B:

    • 包含例如资源P和Q的PRespository和QRespository的JAR.
    • 调度程序servlet B.
    • Servlet映射:/ api/moduleB /
    • Spring Data REST的基URI:/ api/moduleB /
    • 如果我检查URL/api/moduleB /我应该发现资源P和Q.
  • 更多模块......

除此之外,我可以拥有另一个调度程序servlet,我将/ oauth/*端点与其他自定义控制器一起保存,并且安全配置必须适用于所有(/*)

我知道我可以通过ServletRegistrationBean定义更多的调度程序servlet,但我不知道如何附加到每个不同的弹簧数据休息配置.

我也一直在尝试使用SpringApplicationBuilder的分层应用程序上下文,在每个子上下文中包含定义每个调度程序servlet的配置,每个RepositoryRestMvcConfiguration并使每个@EnableJpaRepositories注释定义要扫描的不同包.无论如何我甚至无法加载上下文,因为它们没有被创建为WebApplicationContext因此失败,因为没有可用的ServletContext.

任何帮助/建议?提前致谢.

java spring spring-data-jpa spring-data-rest spring-boot

6
推荐指数
1
解决办法
3006
查看次数