Junior — Middle
Je možné implementovať komponentu, ktorá funguje ako kontrolór, bez použitia anotácie @Controller?
sobes.tech AI
Odpoveď od AI
Áno, je možné implementovať komponent, ktorý bude plniť úlohu kontroléra bez použitia anotácie @Controller v Spring. Anotácia @Controller je len stereotyp, ktorý pomáha Springu detekovať a registrovať triedu ako kontrolér v kontexte MVC.
Alternatívy:
- Použitie anotácie
@Componentalebo@Servicea manuálne nakonfigurovať routovanie cez konfiguráciu. - V Spring WebFlux môžete použiť funkčné trasy (
RouterFunction) a handler-y bez anotácie@Controller. - Môžete vytvoriť bean kontroléra programovo a zaregistrovať ho v kontexte.
Avšak bez @Controller alebo podobných anotácií Spring nedokáže automaticky spojiť HTTP požiadavky s metódami triedy. Preto sa zvyčajne používajú @Controller alebo @RestController pre pohodlie a deklaratívnosť.
Príklad bez @Controller, využívajúc funkčný štýl v Spring WebFlux:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
Týmto spôsobom je možné implementovať kontrolér aj bez anotácie, ale vyžaduje to iný prístup k routovaniu a spracovaniu požiadaviek.