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

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

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

此外,部分第三方框架(如Spring Boot)提供了一流的支持,允许从不同类型的资源(例如XML配置文件、Groovy脚本和@Configuration类)同时加载ApplicationContext。从历史角度看,Spring框架在标准部署中并不支持此功能。因此,Spring框架在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资源位置或一组用于加载生产环境ApplicationContext@Configuration类,同时仍可自由包含或导入另一种配置类型。spring-doc.cadn.net.cn