【问题标题】:How does spring-boot able to serve specific url?spring-boot 如何能够提供特定的 url?
【发布时间】:2017-01-04 16:46:57
【问题描述】:

根据我以前的经验:

  • 使用纯 servlet 时,我们定义 servlet 以便它为匹配特定 url 的请求提供服务。
  • 在使用struts2 时,我们定义了一个过滤器,以便它为匹配特定网址的请求提供服务。
  • 在传统的 xml 配置样式中使用 springMVC 时,我们定义了一个调度程序 servlet,以便它为匹配特定 url 的请求提供服务。

但是spring-boot:

似乎没有明确定义 servlet 或过滤器。但它仍然可以提供特定的网址。

问题是:

  • 是否还在使用 servlet?如果是,如何在不明确定义 servlet 或过滤器的情况下提供 url?

其他相关问题 (基于 cmets 的提示)

  • 似乎SpringBootServletInitializer 的实现将在部署时被调用,但谁来调用它?

【问题讨论】:

  • 是的,它仍在使用 DispatcherServlet。
  • SpringBootServletInitializer 实现了WebApplicationInitializer,这个接口的javadoc解释了它是如何工作的。
  • StackOverflow 旨在帮助社区 - 询问/编辑子问题只会让其他人感到困惑。请创建一个新问题。
  • 再一次,这在 javadoc 中有解释:docs.spring.io/spring-framework/docs/4.3.2.RELEASE/javadoc-api/…
  • @BrianClozel 我删除了不相关的部分,以使其对其他读者有意义。我在同一个问题中问了这个问题,因为我觉得它们非常相关,而且我认为这对读者也有好处。

标签: java spring servlets spring-boot servlet-3.0


【解决方案1】:

如您所见here 的详细信息,在启动时,初始化嵌入式服务器时(默认为 Tomcat),Spring Boot 创建并注册 DispatcherServlet 为一个小服务程序。

然后,Spring 像往常一样扫描您自己的类(包括您从中调用 SpringApplication.run() 的类)并为您的控制器设置相应的映射(如果有)。例如/hello 的映射在这里:

@RestController
@EnableAutoConfiguration
public class TestSpring {

    @RequestMapping("/hello")
    String hello() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(TestSpring.class, args);
    }

}

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2014-08-25
    • 2023-02-12
    • 2017-07-12
    相关资源
    最近更新 更多