Junior — Middle
Czy możliwa jest implementacja komponentu pełniącego rolę kontrolera bez użycia adnotacji @Controller?
sobes.tech AI
Odpowiedź od AI
Tak, można zaimplementować komponent pełniący rolę kontrolera bez użycia adnotacji @Controller w Spring. Adnotacja @Controller to po prostu stereotyp, który pomaga Springowi wykrywać i rejestrować klasę jako kontroler w kontekście MVC.
Alternatywy:
- Użycie adnotacji
@Componentlub@Servicei ręczne skonfigurowanie routingu przez konfigurację. - W Spring WebFlux można używać funkcjonalnych tras (
RouterFunction) i obsługiwaczy bez adnotacji@Controller. - Można utworzyć bean kontrolera programowo i zarejestrować go w kontekście.
Jednak bez @Controller lub podobnych adnotacji Spring nie będzie mógł automatycznie powiązać żądań HTTP z metodami klasy. Dlatego zwykle @Controller lub @RestController są używane dla wygody i deklaratywności.
Przykład bez @Controller, korzystając z stylu funkcjonalnego w Spring WebFlux:
@Bean
public RouterFunction<ServerResponse> route() {
return RouterFunctions.route()
.GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
.build();
}
W ten sposób można zaimplementować kontroler bez adnotacji, ale wymaga to innego podejścia do routingu i obsługi żądań.