インターフェイスの実装を作成するとき、複数の実装クラスがある場合があります。この記事では、呼び出し時に文字列を渡すことにより、特定の実装クラスの指定を紹介します。
1。インターフェイスと実装クラス:
// public interface service interface {public void method();} // 2つの特定の実装クラス@service( "aservice")public class aserviceimplを実装します{@override public void method(){system.out.println( "the empl is a"); } @Override public String toString(){return "a"; }} @service( "bservice")public class bserviceimplを実装しますserviceinterface {@override public void method(){system.out.println( "the imp is b"); } @Override public String toString(){return "b"; }}toString()メソッドは実装クラスで書き換えられ、文字列をカスタマイズできます。呼び出されたときに指定された文字列を渡すと、対応するBeanを取得できます。
2。登録執筆:
@Service( "Register")Public Class Register InterimingBean、ApplicationContextAware {private Map <String、ServiceInterface> serviceImplmap = new Hashmap <>(); private ApplicationContext ApplicationContext; // spring @override public void setApplicationContext(applicationContext applicationContext)のコンテキストを取得しますbeansexception {this.applicationContext = applicationContext; } //インターフェイス実装クラスのすべての豆を取得し、設定したルールに従ってマップに入れます。 //次のコードは、あなたが設定したルールに従って豆をマップに入れることです。ここでの私のルールは鍵です:service.toString();値:bean //呼び出すと、service.toString()に渡されたパラメーターの特定の文字列は、対応するbeanを取得できます//ここでは次の操作を実行できません。呼び出すと、beanの名前は(serviceinterface serviceimpl:beanmap.values()){serversimplmap.put(serviceimpl.tostring()、serviceimpl)に渡されます(serviceinterface); }} public serviceinterface getserviceimpl(string name){return serviceimplmap.get(name); }} 3。テストクラス:
@ResourCereGister Register; @testpublic void testservice(){serviceinterface service = register.getServiceImpl( "a"); service.method(); serviceinterface service2 = register.getServiceImpl( "b"); service2.method();}操作結果は図に示されています。
述べる:
スプリングロード後、contextを適用する方法を取得します。
ApplicationContextAwareインターフェイスBeanの実装では、Beanの負荷プロセス中にSpringのApplicationContextを取得できます。これは特に重要です。 ApplicationContextは、スプリングアプリケーションコンテキストです。 ApplicationContextから、多数のスプリングコンテナコンテンツとBeanを含む情報を入手できます。
@Component( "InformerRegistry")Public Final Class InformerRegistryは、ApplicationContextAware {private applicationContext ApplicationContext; @Override public void setApplicationContext(applicationContext applicationContext)throws beansexception {this.applicationContext = applicationContext; }} Springの一般的に使用されるBean Extensionインターフェイスについては、http://www.cnblogs.com/xrq730/p/5721366.htmlを参照してください。
知らせ:
スプリングは、次の方法を使用してスプリングコンテキストを取得するときに開始されます。次の方法を数回記述すると、複数のスプリングコンテナが次のようにコードをコピーして開始されます。ApplicationContextCTX= new ClassPathXMLApplicationContext( "classPath:meta-inf/spring/*。xml");
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。