#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
основной класс) и его подпакетах (исходный код)
После некоторых дополнительных исследований, по-видимому, это объясняется на нескольких веб-сайтах. Жаль, что основные учебные пособия также не ссылаются на это * пожимает плечами*