Junior — Middle
Je možné implementovat komponentu, která funguje jako kontroler, bez použití anotace @Controller?
sobes.tech AI
Odpověď od AI
Ano, je možné implementovat komponentu, která bude plnit roli kontroléru, aniž by bylo použito anotace @Controller ve Springu. Anotace @Controller je pouze stereotyp, který pomáhá Springu detekovat a registrovat třídu jako kontrolér v kontextu MVC.
Alternativy:
- Použití anotace
@Componentnebo@Servicea ruční konfigurace směrování přes konfiguraci. - V Spring WebFlux lze použít funkční routy (
RouterFunction) a zpracovatele bez anotace@Controller. - Může být vytvořen bean kontroléru programově a zaregistrován v kontextu.
Nicméně bez @Controller nebo podobných anotací Spring nedokáže automaticky spojit HTTP požadavky s metodami třídy. Proto se obvykle používají @Controller nebo @RestController pro pohodlí a deklarativnost.
Příklad bez @Controller, s použitím funkčního stylu ve Spring WebFlux:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
Tímto způsobem lze implementovat kontrolér i bez anotace, ale vyžaduje to jiný přístup k routování a zpracování požadavků.