@RequestMapping 如何在 Spring Boot 内部工作?
How @RequestMapping internally works in Spring Boot?
@RestController
@RequestMapping("/employee")
public class Employee {
@RequestMapping("/save")
public void saveEmployee() {
// saving employee
}
}
@RequestMapping
将如何在内部工作以将请求映射到 saveEmployee
方法?
在应用程序启动时,Spring会通过XMLConfig、JavaConfig、ComponentScanning等方式识别所有Bean
并存入ApplicationContext
.
Spring 引导会为您自动配置许多 Bean,包括 RequestMappingHandlerMapping.
当此 Bean 为 initialized 时,它会扫描 ApplicationContext 以查找任何用 @Controller
注释的 Bean。
然后它遍历每个 Controller
bean 和 looks for methods annotated with @RequestMapping
. Finally it persists these mapping/handler pairs in the MappingRegistry
DispatcherServlet
是您的应用程序的中央 HTTP 请求处理程序,它将 search ApplicationContext
用于任何实现 HandlerMapping
接口的 Bean,HandlerMapping
RequestMappingHandlerMapping
Bean 确实(通过继承的方式)。
然后它遍历这些 bean,要求它们为这个请求解析相应的处理程序。 RequestMappingHandlerMapping
bean 将通过 searching 其 MappingRegistry
.
解析处理程序
找到匹配项后,处理程序方法最终为 invoked。
@RestController
@RequestMapping("/employee")
public class Employee {
@RequestMapping("/save")
public void saveEmployee() {
// saving employee
}
}
@RequestMapping
将如何在内部工作以将请求映射到 saveEmployee
方法?
在应用程序启动时,Spring会通过XMLConfig、JavaConfig、ComponentScanning等方式识别所有Bean
并存入ApplicationContext
.
Spring 引导会为您自动配置许多 Bean,包括 RequestMappingHandlerMapping.
当此 Bean 为 initialized 时,它会扫描 ApplicationContext 以查找任何用 @Controller
注释的 Bean。
然后它遍历每个 Controller
bean 和 looks for methods annotated with @RequestMapping
. Finally it persists these mapping/handler pairs in the MappingRegistry
DispatcherServlet
是您的应用程序的中央 HTTP 请求处理程序,它将 search ApplicationContext
用于任何实现 HandlerMapping
接口的 Bean,HandlerMapping
RequestMappingHandlerMapping
Bean 确实(通过继承的方式)。
然后它遍历这些 bean,要求它们为这个请求解析相应的处理程序。 RequestMappingHandlerMapping
bean 将通过 searching 其 MappingRegistry
.
找到匹配项后,处理程序方法最终为 invoked。