混合使用 XML、Groovy 脚本和组件类

有时,可能需要混合使用 XML 配置文件、Groovy 脚本和组件类(通常是 @Configuration 类)来配置测试的 ApplicationContext。例如,如果在生产环境中使用 XML 配置,您可能会决定使用 @Configuration 类来为测试配置特定的 Spring 管理组件,反之亦然。

此外,一些第三方框架(例如 Spring Boot)为同时从不同类型的资源加载 ApplicationContext 提供了优先支持(例如,XML 配置文件、Groovy 脚本和 @Configuration 类)。Spring Framework 在历史上并未支持标准部署的这种方式。因此,Spring Framework 在 spring-test 模块中提供的大多数 SmartContextLoader 实现都只支持每个测试上下文的一种资源类型。然而,这并不意味着您不能同时使用它们。一个例外是 GenericGroovyXmlContextLoaderGenericGroovyXmlWebContextLoader 同时支持 XML 配置文件和 Groovy 脚本。此外,第三方框架可以选择通过 @ContextConfiguration 支持 locationsclasses 的声明,并且,在 TestContext 框架中,您可以通过标准测试支持获得以下选项。

如果要使用资源位置(例如,XML 或 Groovy)和 @Configuration 类来配置测试,则必须选择其中一个作为入口点,并且该入口点必须包含或导入另一个。例如,在 XML 或 Groovy 脚本中,您可以通过使用组件扫描或将其定义为正常的 Spring Bean 来包含 @Configuration 类,而在 @Configuration 类中,您可以使用 @ImportResource 来导入 XML 配置文件或 Groovy 脚本。请注意,此行为在语义上等同于您在生产环境中配置应用程序的方式:在生产配置中,您可以定义一组 XML 或 Groovy 资源位置或一组 @Configuration 类,从中加载生产 ApplicationContext,但您仍然可以自由地包含或导入其他类型的配置。

© . This site is unofficial and not affiliated with VMware.