我有不同的 Spring 测试。它们中的一些仅使用实体管理器和存储库,但一些还使用其他 bean 和 实体管理器和存储库。我可以重用为数据库测试构建的上下文并只构建更大上下文的缺失部分吗?因此再次避免昂贵的实体管理器构建
最佳答案
是的,这可以通过针对您的上下文的巧妙层次结构来实现。任何给定上下文中的 Bean 都可以看到同一上下文中的 bean 以及父上下文中的 bean。
您可能不会使用这样的层次结构实际部署您的生产应用程序,但在测试中创建这样的层次结构可以让您避免再次加载 JPA EntityManager
的性能影响。
基本上,您将在测试类层次结构中使用 @ContextHierarchy
注释,其中为(可能是 abstract
)父测试类加载的上下文定义了 bean对于 EntityManager
。
看看 Context hierarchies Spring Framework 引用手册中测试章节的部分。
问候,
Sam(Spring TestContext 框架的作者)
关于java - 重用缓存的 spring 上下文来构建更大的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23220524/