Lehetséges-e olyan komponens megvalósítása, amely kontrollerként működik, anélkül, hogy az @Controller annotációt használnánk?
sobes.tech MI
Válasz az MI-től
Igen, lehet olyan komponenst megvalósítani, amely a vezérlő szerepét tölti be anélkül, hogy a @Controller annotációt használnánk Springben. A @Controller csupán egy sztereotípia, amely segíti a Springet abban, hogy észlelje és regisztrálja az osztályt MVC kontextusban.
Alternatívák:
- A
@Componentvagy@Serviceannotáció használata, és a routing kézi konfigurálása. - Spring WebFlux-ban funkcionális útvonalakat (
RouterFunction) és kezelőket lehet használni@Controllernélkül. - Programozott módon lehet létrehozni egy vezérlő bean-t, és regisztrálni azt a kontextusban.
Azonban @Controller vagy hasonló annotációk nélkül a Spring nem tudja automatikusan összekapcsolni a HTTP-kéréseket az osztály metódusaival. Ezért általában a @Controller vagy @RestController használata a kényelmes és deklaratív megoldás.
Példa @Controller nélkül, a Spring WebFlux funkcionális stílusát használva:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
Így megvalósítható egy vezérlő anélkül, hogy annotációt használnánk, de ez más megközelítést igényel az útvonalak és a kéréskezelés terén.