Привязка @SpringBootApplication к @RestController в Java / Kotlin

#java #spring-boot #kotlin

#java #весенняя загрузка #котлин

Вопрос:

Я реализую REST API в Kotlin, используя два руководства (1, 2).

Первый даже не включает main функцию, которая является точкой входа приложения.
Второй, однако, включает следующий файл, который никак не связан (по крайней мере, не тот, который я вижу) с контроллером.

 // ClientApiApplication.kt

@SpringBootApplication
class ClientApiApplication

fun main(args: Array<String>) {
    runApplication<ClientApiApplication>(*args)
}
  

И это контроллер, который я использую:

 // GreetingController.kt

@RestController
class GreetingController {

    @GetMapping("/greeting")
    fun greeting() {
        return "Hello World"
    }

}
  

Однако, когда я запускаю ClientApiApplication , он распознает контроллер.
Итак, где происходит это связывание? Это то, что Spring делает из коробки?

Ответ №1:

Под капотом @SpringBootApplication находится композиция @Configuration @ComponentScan @EnableAutoConfiguration аннотаций и . С этим параметром по умолчанию Spring Boot будет автоматически сканировать компоненты в текущем пакете (содержащем @SpringBoot основной класс) и его подпакетах (исходный код)

После некоторых дополнительных исследований, по-видимому, это объясняется на нескольких веб-сайтах. Жаль, что основные учебные пособия также не ссылаются на это * пожимает плечами*