Gradle 'war' 插件如何知道调用 Spring 框架?

How does Gradle 'war' plugin know to invoke Spring Framework?

我环顾四周,似乎找不到这个问题的直接答案。 Gradle 'war' 插件如何知道如何以及何时调用 Spring 框架?

比如使用war插件任务编译项目时(比如here),在什么时候调用Spring框架处理[=14] =] 和 @RequestMapping 注释来生成正确编译的 servlet? Gradle 是否硬连线以识别 Spring 框架?

非常感谢!

通常这发生在运行时,通过 class 路径扫描或通过 @Configuration bean。存在注释处理器,但我不知道有任何一个可以将 Spring 注释转换为 XML 配置文件,即另一个 Spring 配置系统。

在您的示例中,扩展 AbstractAnnotationConfigDispatcherServletInitializer 的 class 由 Servlet 3.0+ 容器(在本例中为码头)自动检测到,因为该容器首先读取 WAR。

然后 ServletInitializer 使用提供的 class 作为根继续旋转 Spring; Spring 检查所有注释并构建 Environment 和所有 bean。

如您所见,这与 Gradle 或任何其他构建系统没有任何关系。