对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

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

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

此外,一些第三方框架(例如 Spring Boot)提供了一流的支持,可同时从不同类型的资源加载 ApplicationContext(例如 XML 配置文件、Groovy 脚本和 @Configuration 类)。历史上,Spring Framework 在标准部署中并不支持此功能。因此,Spring Framework 在 spring-test 模块中提供的大多数 SmartContextLoader 实现仅支持每个测试上下文使用一种资源类型。然而,这并不意味着您不能同时使用两者。一般规则的一个例外是,GenericGroovyXmlContextLoaderGenericGroovyXmlWebContextLoader 同时支持 XML 配置文件和 Groovy 脚本。此外,第三方框架可以选择通过 @ContextConfiguration 支持声明 locationsclasses;借助 TestContext 框架中的标准测试支持,您拥有以下选项。spring-doc.cadn.net.cn

如果你想在测试中使用资源位置(例如 XML 或 Groovy)和 @Configuration 类进行配置,必须选择其中一种作为入口点,并且该入口点必须包含或导入另一种配置方式。例如,在 XML 或 Groovy 脚本中,你可以通过组件扫描或将其定义为普通的 Spring Bean 来包含 @Configuration 类;而在 @Configuration 类中,你可以使用 @ImportResource 注解来导入 XML 配置文件或 Groovy 脚本。请注意,这种行为在语义上等同于你在生产环境中配置应用程序的方式:在生产配置中,你从一组 XML 或 Groovy 资源位置,或者一组 @Configuration 类中加载生产环境的 ApplicationContext,但你仍然可以自由地包含或导入另一种类型的配置。spring-doc.cadn.net.cn