spring - @RequestMapping 在 Spring Boot 内部如何工作?

标签 spring spring-boot spring-restcontroller request-mapping

@RestController
@RequestMapping("/employee")
public class Employee {
  @RequestMapping("/save")
  public void saveEmployee() {
    // saving employee
  }
}
@RequestMapping如何将在内部工作以将请求映射到 saveEmployee方法?

最佳答案

在应用程序启动期间,Spring 将识别所有 Bean s 通过 XML 配置、Java 配置或组件扫描的方式,并将它们存储在 ApplicationContext .

Spring Boot 为您自动配置了许多 Bean,包括 RequestMappingHandlerMapping .

当这个 Bean 是 initialized它会在 ApplicationContext 中扫描任何带有 @Controller 注释的 Bean .

然后它遍历每个 Controller bean 和looks对于带有 @RequestMapping 注释的方法.最后,它将这些映射/处理程序对保存在 MappingRegistry 中。
DispatcherServlet是您的应用程序的中央 HTTP 请求处理程序,它将 search ApplicationContext对于任何实现 HandlerMapping 的 Bean接口(interface),其中RequestMappingHandlerMapping Bean 确实(通过继承)。

然后它遍历这些 bean,要求它们为此请求解析相应的处理程序。 RequestMappingHandlerMapping bean 将通过 searching 解析处理程序它的MappingRegistry .

当找到匹配项时,处理程序方法最终为 invoked .

关于spring - @RequestMapping 在 Spring Boot 内部如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329692/

相关文章:

spring - 如何使用 Spring Boot 的 'spring.jackson.date-format' 属性?

@RequestBody 上的 Spring @InitBinder

java - 通过 Java Spring 构建 sitemap.xml

java - 如何通过连接下划线(_)获取Json值

java - 有没有办法将 @JsonView 放在带有 QueryResult returnType 的 Controller 方法上?

java - RestController 在 RequestBody 中接收到错误的字符集

java - Spring/Hibernate 获取包含列表的对象列表

java.lang.ClassNotFoundException : com.netflix.discovery.EurekaClientConfig

java - 如何测试 Spring Boot 处理程序拦截器

spring-boot:如果密码失败,则在没有数据库的情况下启动应用程序