Lors de la rédaction de l'implémentation de l'interface, il existe parfois plusieurs classes d'implémentation. Cet article introduit la spécification d'une classe d'implémentation spécifique en transmettant une chaîne lors de l'appel.
1. Classes d'interface et d'implémentation:
// Interface interface publique ServiceInterface {public void method ();} // deux classes d'implémentation spécifiques @Service ("ASERVICE") public classe AServiceIMPL implémente ServiceInterface {@Override public void method () {System.out.println ("L'IMP est un"); } @Override public String toString () {return "a"; }} @Service ("BService") La classe publique BServiceImpl implémente ServiceInterface {@Override public void méthode () {System.out.println ("L'IMP est b"); } @Override public String toString () {return "b"; }}La méthode toString () est réécrite dans la classe d'implémentation et vous pouvez personnaliser la chaîne. Lorsque vous passez la chaîne spécifiée lorsque vous appelez, vous pouvez obtenir le haricot correspondant.
2. Enregistrer l'écriture:
@Service ("Register") Le registre de classe publique implémente InitializationBean, ApplicationContextAware {Private Map <String, ServiceInterface> ServiceImplmap = new HashMap <> (); application application privée applicationContext; // Obtenez le contexte de Spring @Override public void setApplicationContext (applicationContext ApplicationContext) lève BeanSException {this.ApplicationContext = applicationContext; } // Obtenez tous les beans de la classe d'implémentation d'interface et placez-les dans la carte en fonction des règles que vous avez définies, @Override public void AfterProperTesTet () lève l'exception {map <string, serviceInterface> beanmap = applicationContext.getBeansofType (ServiceInterface.Class); // Le code suivant est de mettre le bean dans la carte en fonction des règles que vous avez établies, et ma règle ici est la clé: Service.ToString (); Valeur: Bean // Lors de l'appel, la chaîne spécifique du paramètre transféré dans Service.ToString () peut obtenir le bean // correspondant, vous ne pouvez pas non plus effectuer les opérations suivantes ici, utilisez simplement Beanmap directement. Lors de l'appel, le nom du bean est passé (ServiceInterface) pour (ServiceInterface ServiceImpl: beanmap.values ()) {ServiceImplmap.put (ServiceImpl.ToString (), serviceIMPL); }} public ServiceInterface getServiceImpl (name de chaîne) {return ServiceImplmap.get (name); }} 3. Classe de test:
@ResourceRegister Register; @TestPublic void TestService () {ServiceInterface Service = Register.getServiceImpl ("A"); Service.Method (); ServiceInterface Service2 = registre.getServiceImpl ("B"); Service2.Method ();}Les résultats de l'opération sont présentés sur la figure:
Remarque:
Après le chargement du ressort, obtenez la méthode pour appliquer Context:
Implémentation du bean d'interface ApplicationContextAware, ApplicationContext de Spring peut être obtenu pendant le processus de chargement de bean. Ceci est particulièrement important. ApplicationContext est le contexte de l'application Spring. Un grand nombre de contenus de conteneur à ressort et d'informations, y compris tout bean, peuvent être obtenus à partir de l'applicationContext.
@Component ("InformrerRegistry") public final class InformrerRegistry implémente applicationContextAware {private applicationContext applicationContext; @Override public void setApplicationContext (applicationContext ApplicationContext) lève BeanSException {this.ApplicationContext = applicationContext; }} Pour l'interface d'extension de bean couramment utilisée, veuillez vous référer à: http://www.cnblogs.com/xrq730/p/5721366.html
Avis:
Le printemps est démarré lorsque vous utilisez la méthode suivante pour obtenir le contexte de ressort. Si vous écrivez plusieurs fois la méthode suivante, plusieurs conteneurs Spring seront démarrés pour copier le code comme suit: ApplicationContext ctx = new ClassPathxmlApplicationContext ("ClassPath: Meta-Inf / Spring / *. Xml");
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.