Comment trouver tous les contrôleurs dans Spring MVC?
De fournir certains d'exécution généré documentation de l'API, je veux itérer sur tous les contrôleurs Spring MVC. Tous les contrôleurs sont annotés avec le Printemps @Contrôleur d'annotation. Actuellement, je fais comme ça:
for (final Object bean: this.context.getBeansWithAnnotation(
Controller.class).values())
{
...Generate controller documentation for the bean...
}
Mais le premier appel de ce code est EXTRÊMEMENT lent. Je me demande si le Printemps itère sur TOUS classes dans le classpath au lieu de simplement la vérification de la définition de haricots. Les contrôleurs sont déjà chargés lorsque le code ci-dessus est exécuté, le journal affiche tous les d'eux avec leur demande de mappages de sorte Spring MVC devez déjà les connaître tous et il doit y avoir un moyen plus rapide pour obtenir une liste d'entre eux. Mais comment?
source d'informationauteur kayahr
Vous devez vous connecter pour publier un commentaire.
J'ai aussi rencontré une telle exigence avant quelques mois et j'ai réalisé à l'aide de l'extrait de code suivant.
Vous pouvez aussi faire quelque chose comme ça avec vos contrôleurs.
Mise à jour de l'extrait de code. Enlevé le pas de code nécessaire et juste de l'affichage de la classe nom de l'contrôleurs pour une meilleure compréhension.
Espérons que cela vous aide. Des acclamations.
J'aime l'approche proposée par @Japs, mais recommande également une autre approche.
Ceci est basé sur votre sens de l'observation que le chemin de la classe a déjà été analysés par le Printemps, et les contrôleurs et la demande mappé méthodes configuré, cette cartographie est maintenu dans un
handlerMapping
composant. Si vous utilisez le Printemps 3.1 le présenthandlerMapping
composant est une instance de RequestMappingHandlerMapping, vous pouvez faire une requête pour trouver le handlerMappedMethods et les contrôleurs, le long de ces lignes(si vous êtes sur une version plus ancienne de Printemps, vous devriez être en mesure d'utiliser une approche similaire):J'ai fourni plus de détails sur cette à cette url http://biju-allandsundry.blogspot.com/2012/03/endpoint-documentation-controller-for.html
Elle est basée sur une présentation sur Spring 3.1 par Rossen Stoyanchev de Source.