Junior — Middle
Kas on võimalik luua komponent, mis toimib kontrollorina, kasutades @Controller annotatsiooni?
sobes.tech AI
Vastus AI-lt
Jah, on võimalik rakendada komponenti, mis täidab kontrollori rolli ilma @Controller annotatsioonita Springis. @Controller on lihtsalt stereotüüp, mis aitab Springil tuvastada ja registreerida klassi kui kontrollori MVC kontekstis.
Alternatiivid:
- Kasutada
@Componentvõi@Serviceannotatsiooni ning käsitsi konfigureerida marsruutimine konfiguratsiooni kaudu. - Spring WebFluxis saab kasutada funktsionaalseid marsruute (
RouterFunction) ja käsitlejaid ilma@Controllerannotatsioonita. - Võib programmiliselt luua kontrollori bean'i ja registreerida selle kontekstis.
Kuid ilma @Controller või sarnaste annotatsioonideta ei suuda Spring automaatselt siduda HTTP-päringuid klassi meetoditega. Seetõttu kasutatakse tavaliselt @Controller või @RestController mugavuse ja deklaratiivsuse huvides.
Näide ilma @Controller, kasutades funktsionaalset stiili Spring WebFluxis:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
Seega on võimalik kontrollorit rakendada ka ilma annotatsioonita, kuid see nõuab teistsugust lähenemist marsruutimise ja päringute töötlemise osas.