此版本仍在开发中,尚未被视为稳定版。如需最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

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

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

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

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