How does spring-boot able to serve specific url?

Refresh

December 2018

Views

239 time

2

In my previous experience:

  • When using pure servlet, we define servlets so that it will serve requests that match specific urls.
  • When using struts2, we define a filter so that it will serve requests that match specific urls.
  • When using springMVC in a traditional xml configuration style, we define a dispatcher servlet so that it will serve requests that match specific urls.

But with spring-boot:

Seems no servlet or filter is defined explicitly. But it still could serve specific urls.

The questions is:

  • Is it still using servlet? If yes, how it get to serve urls without defining servlet or filter explicitly?

Additional related questions (base on tips from comments):

  • It seems the implementation of SpringBootServletInitializer will be invoked on deploy, but who is going to invoke it?

1 answers

1

Как вы можете видеть здесь в деталях, при запуске, при инициализации встроенный сервер (Tomcat по умолчанию), Spring Загрузочный создает и регистрирует 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);
    }

}