我和春天有数据休息一个春天启动应用程序,我使用@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 Boot生成可执行JAR的项目,该JAR使用Spring Data REST公开REST API.它还与Spring Security OAuth集成.这很好.我的问题如下,
我希望只有当具有JPA存储库的对应JAR位于类路径中(它已被定义为依赖项)时,我才想要启用REST API的不同模块.
问题是我希望他们彼此独立.我希望能够在具有不同映射的不同调度程序servlet下为它们提供服务,因此我可以为每个映射指定不同的baseUri,并为资源发现提供不同的根URL.
我会试着让它更清楚:
API模块A:
API模块B:
更多模块......
除此之外,我可以拥有另一个调度程序servlet,我将/ oauth/*端点与其他自定义控制器一起保存,并且安全配置必须适用于所有(/*)
我知道我可以通过ServletRegistrationBean定义更多的调度程序servlet,但我不知道如何附加到每个不同的弹簧数据休息配置.
我也一直在尝试使用SpringApplicationBuilder的分层应用程序上下文,在每个子上下文中包含定义每个调度程序servlet的配置,每个RepositoryRestMvcConfiguration并使每个@EnableJpaRepositories注释定义要扫描的不同包.无论如何我甚至无法加载上下文,因为它们没有被创建为WebApplicationContext因此失败,因为没有可用的ServletContext.
任何帮助/建议?提前致谢.