Beim Schreiben von Schnittstellenimpulen -Implementierung gibt es manchmal mehrere Implementierungsklassen. In diesem Artikel wird angegeben, indem eine bestimmte Implementierungsklasse angegeben wird, indem Sie beim Aufrufen in eine Zeichenfolge bestehen.
1. Schnittstellen- und Implementierungsklassen:
// Schnittstelle public interface ServiceInterface {public void methode ();} // Zwei spezifische Implementierungsklassen @Service ("Asservice") öffentliche Klasse AsserviceImpl implementiert ServiceInterface {@Override public void methode () {System.out.println ("The Impl is a"); } @Override public String toString () {return "a"; }} @Service ("BService") public class bserviceImpl implementiert ServiceInterface {@Override public void methode () {System.out.println ("Das Impl is b"); } @Override public String toString () {return "b"; }}Die Methode toString () wird in der Implementierungsklasse neu geschrieben und Sie können die Zeichenfolge anpassen. Wenn Sie die angegebene Zeichenfolge übergeben, wenn Sie aufgerufen werden, können Sie die entsprechende Bean erhalten.
2. Schreiben Register:
@Service ("Register") Public Class Register implementiert InitializingBean, applicationContextaware {private map <String, serviceInterface> serviceImplmap = new Hashmap <> (); private applicationContext applicationContext; // Erhalten Sie den Kontext von Spring @Override public void setApplicationContext (ApplicationContext applicationContext). } // Holen Sie sich alle Bohnen der Schnittstellenimplementierungsklasse und setzen Sie sie gemäß den von Ihnen festgelegten Regeln in die Karte ein. // Der folgende Code besteht darin, die Bean gemäß den von Ihnen festgelegten Regeln in die Karte zu setzen, und meine Regel hier ist der Schlüssel: service.toString (); Wert: Bean // Bei dem Aufrufen kann die spezifische Zeichenfolge des Parameters in service.toString () die entsprechende Bean erhalten // Sie können hier auch nicht die folgenden Vorgänge ausführen. Verwenden Sie einfach BeanMap direkt. Beim Anruf wird der Name der Bean übergeben (ServiceInterface) für (ServiceInterface ServiceImpl: beanmap.values ()) {ServiceImplMap.put (serviceImpl.toString (), serviceImpl); }} public ServiceInterface getServiceImpl (String -Name) {return serviceImplmap.get (name); }} 3.. Testklasse:
@ResourCeregister Register; @Testpublic void testService () {ServiceInterface Service = Register.getServiceImpl ("a"); Service.Method (); ServiceInterface Service2 = Register.getServiceImpl ("B"); service2.method ();}Die Betriebsergebnisse sind in der Abbildung dargestellt:
Bemerkung:
Lassen Sie nach dem Laden der Frühlings die Methode anwenden Context erhalten:
Implementieren Sie die ApplicationContextaware Interface Bean und kann während des Bean -Ladungsprozesses erhalten werden. Dies ist besonders wichtig. ApplicationContext ist der Kontext der Spring Application. Eine große Anzahl von Inhalt und Informationen von Federcontainern, einschließlich einer Bean, können aus dem ApplicationContext erhalten werden.
@Component ("InformationRegistry") öffentliche endgültige Klasseninformation implementiert ApplicationContextaware {private applicationContext applicationContext; @Override public void setApplicationContext (ApplicationContext applicationContext) löst beansexception {this.applicationContext = ApplicationContext; }} Weitere Informationen finden Sie unter der allgemein verwendeten Bean -Erweiterungs -Schnittstelle unter: http://www.cnblogs.com/xrq730/p/5721366.html
Beachten:
Der Frühling wird gestartet, wenn Sie die folgende Methode verwenden, um den Federkontext zu erhalten. Wenn Sie die folgende Methode mehrmals schreiben, werden mehrere Spring-Container so gestartet, dass der Code wie folgt kopiert wird: applicationContext ctx = new classpathxmlApplicationContext ("ClassPath: meta-inf/fing/*. Xml");
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.