La principale recherche de cet article est d'obtenir tous les haricots avec des annotations spécifiques après le début du printemps, comme suit.
Récemment, j'ai rencontré un scénario commercial dans le projet, qui est d'obtenir tous les haricots qui implémentent un objet d'interface spécifique dans tous les haricots après le démarrage du conteneur à ressort. La première chose à laquelle j'ai pensé est ApplicationContextAware. Dans le setApplicationContext, j'ai obtenu tous les haricots via CTX. Plus tard, j'ai trouvé que la logique semblait mal. Cette méthode n'a pas été mise en œuvre après l'initialisation de tous les haricots. Plus tard, je l'ai essayé de voir s'il y avait des auditeurs et autres, et j'ai trouvé une bonne chose ApplicationListener, puis Baidu a utilisé ApplicationListener. Il s'est avéré qu'il y avait beaucoup d'exemples, donc je vais enregistrer mes exemples.
C'est très simple. Implémentez simplement ApplicationListener<ContextRefreshedEvent> puis @Component la classe d'implémentation. Le code est le suivant:
@Component public class ContexTreFreshEdListener implémente ApplicationListener <ContexTreFreshEdEvent> {@Override public void onApplicationEvent (ContexTreFreshEdEvent Event) {// Le conteneur racine est un conteneur de printemps if (map.getApplicationContex event.getApplicationContext (). GetBeansWithAnnotation (iMobile.class); pour (objet bean: beans.values ()) {System.err.println (bean == null? "null": bean.getClass (). getName ());} System.err.println ("===== ContextrefreshEdEvent =======" + event.getsource (). Parmi eux, toutes les collections de haricots avec des annotations spécifiques sont obtenues via event.getApplicationContext().getBeansWithAnnotation , puis parcourez tous les haricots pour mettre en œuvre des scénarios commerciaux.
Résumé et pensées: une telle fonction peut initialiser les paramètres du système, obtenir une liste de tous les services d'interface dans le système et d'autres fonctions qui doivent être initialisées après le démarrage du printemps.
Prélongons: en plus des événements ci-dessus après le démarrage, il y a trois autres événements
Fermé est appelé lors de la fermeture du conteneur, démarré est appelé lorsque le conteneur est démarré et arrêté est appelé lorsque le conteneur est fermé.
J'ai commencé et m'arrêtai à travers Tomcatserver, et je n'ai vu que rafraîchi et fermé. Je ne sais pas pourquoi, donc je continuerai à étudier si j'ai le temps.
Ce qui précède est l'intégralité du contenu de cet article sur l'obtention de tous les codes d'instance Bean avec des annotations spécifiques après le démarrage du printemps. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!