-
Les annotations Spring
Bonjour, mon problème se divise en 2 parties:
La première concerne l'annotation @Autowired: Dans une classe de test si la classe présente les annotations @RunWith et ContextConfiguration, Spring est capable de détecter le type d'objet avec @Autowired dans le context mais elle n'est plus valable dans une autre classe alors doit on obligatoirement récupérer le bean par le biais de la méthode getBean() de l'AplicationContext ou existe t-il un autre moyen avec des annotations comme pour la classe test.
La deuxième c'est comment Spring utilise t-il les annotations @RunWith et @ContextConfiguration pour faire appel au context, détecte les attributs ou les méthodes annotés et parvient à exécuter la classe sans se poser de question sur le nom de la classe? Certe il doit y avoir des aspects derrière tout ça mais quelle classe lui permet il de tout déclencher vu que le seul moyen de récupération des annotations c'est de connaitre le nom de la classe.
Si quelqu'un peut m'éclaircir sur ces 2 sujets parce que je me tue à vouloir comprendre mais j'y arrive pas.
-
Bon ok j'ai trouvé la réponse à la seconde question: Spring récupère seulement le Thread courent et détecte la classe annotée par les annotations @RunWith et @ContextConfiguration suivant les traces..., il suffit après de déléguer le traitement à des aspects et le tour est joué...
-
Au final je pense aussi avoir trouvé la réponse à ma première question en fait dans une application JavaEE on a l'environnement des tests unitaires et l'environnement web, dans le premier cas Spring est obligé de mettre les annotations @RunWith et @ContextConfiguration pour respectivement exécuter le test et démarrer le contexte ce qui lui permet de récupérer tous les objets annotés @Autowired ou @Resource et dans le second cas grâce au listener déclaré dans le descripteur de déploiement Spring charge son contexte ce qui permet la détection de chacune de ces annotations donc pas d'utilisation de la méthode getBean() du context. La question ne devrait se poser mais ça m'a permit de connaître le rôle du listener (ContextLoaderListener). Merci.