Sobes.tech
Junior — Middle

Est-il possible de réaliser un composant jouant le rôle de contrôleur sans utiliser l'annotation @Controller?

sobes.tech IA

Réponse de l'IA

Oui, il est possible de réaliser un composant qui joue le rôle de contrôleur sans utiliser l'annotation @Controller dans Spring. L'annotation @Controller est simplement un stéréotype qui aide Spring à détecter et enregistrer la classe en tant que contrôleur dans le contexte MVC.

Alternatives :

  • Utiliser l'annotation @Component ou @Service et configurer manuellement le routage via la configuration.
  • Dans Spring WebFlux, vous pouvez utiliser des routes fonctionnelles (RouterFunction) et des gestionnaires sans l'annotation @Controller.
  • Vous pouvez créer un bean de contrôleur de manière programmatique et l'enregistrer dans le contexte.

Cependant, sans @Controller ou annotations similaires, Spring ne pourra pas associer automatiquement les requêtes HTTP aux méthodes de la classe. C'est pourquoi @Controller ou @RestController sont généralement utilisés pour la commodité et la déclaration.

Exemple sans @Controller, en utilisant le style fonctionnel dans Spring WebFlux :

@Bean
public RouterFunction<ServerResponse> route() {
    return RouterFunctions.route()
        .GET("/hello", request -> ServerResponse.ok().bodyValue("Hello World"))
        .build();
}

Ainsi, il est possible de réaliser un contrôleur sans l'annotation, mais cela nécessite une approche différente pour le routage et le traitement des requêtes.