Junior — Middle
Ar įmanoma įgyvendinti komponentą, kuris veikia kaip kontroleris, nenaudojant @Controller anotacijos?
sobes.tech AI
Atsakymas iš AI
Taip, galima įgyvendinti komponentą, kuris atlieka kontrolerio vaidmenį be @Controller anotacijos Spring'e. @Controller yra tik stereotipas, kuris padeda Spring aptikti ir registruoti klasę kaip kontrolerį MVC kontekste.
Alternatyvos:
- Naudoti
@Componentarba@Serviceanotaciją ir rankiniu būdu sukonfigūruoti maršrutizaciją per konfigūraciją. - Spring WebFlux galima naudoti funkcines maršrutus (
RouterFunction) ir handler'ius be@Controlleranotacijos. - Gali būti sukurtas kontrolerio bean'as programiškai ir registruotas kontekste.
Tačiau be @Controller ar panašių anotacijų, Spring negalės automatiškai susieti HTTP užklausų su klasės metodais. Todėl dažnai naudojami @Controller arba @RestController patogumui ir deklaratyvumui.
Pavyzdys be @Controller, naudojant funkcionalų stilių Spring WebFlux:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
Taip, galima įgyvendinti kontrolerį ir be anotacijos, tačiau tai reikalauja kitokio požiūrio į maršrutizaciją ir užklausų apdorojimą.