Как spring-boot может обслуживать определенные URL?

В моем предыдущем опыте:

  • При использовании чистого servlet Мы определяем сервлеты так, чтобы они обслуживали запросы, соответствующие конкретным URL.
  • Когда используешь struts2 Мы определяем фильтр так, чтобы он обслуживал запросы, соответствующие определенным URL.
  • Когда используешь springMVC в традиционном стиле конфигурации xml мы определяем сервлет диспетчера, чтобы он обслуживал запросы, соответствующие определенным URL-адресам.

Но с spring-boot :

Кажется, что сервлет или фильтр не определены явно. Но это все еще может служить конкретные URL.

Вопросы это:

  • Это все еще использует сервлет? Если да, то как он может обслуживать URL-адреса без явного определения сервлета или фильтра?

Дополнительные связанные вопросы (основаны на подсказках из комментариев):

  • Кажется, реализация SpringBootServletInitializer будет задействован при развертывании, но кто будет его вызывать?

1 ответ

Решение

Как вы можете видеть здесь подробно, при запуске, при инициализации встроенного сервера (Tomcat по умолчанию), Spring Boot создает и регистрирует DispatcherServlet как сервлет.

Spring затем, как обычно, сканирует ваши собственные классы (включая тот, который вы вызываете SpringApplication.run() from) и устанавливает соответствующее отображение для ваших контроллеров, если оно у вас есть. Например отображение для /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);
    }

}
Другие вопросы по тегам