Saat menulis implementasi antarmuka, kadang -kadang ada beberapa kelas implementasi. Artikel ini memperkenalkan menentukan kelas implementasi tertentu dengan meneruskan string saat menelepon.
1. Antarmuka dan kelas implementasi:
// Antarmuka Antarmuka Public Interface ServiceInterface {public void Method ();} // Dua kelas implementasi spesifik @Service ("aservice") kelas publik AServiceImpl mengimplementasikan LayananInterface {@override public void Method () {System.out.println ("IMP adalah A"); } @Override public string toString () {return "a"; }} @Service ("BService") kelas publik BServiceImpl mengimplementasikan LayananInterface {@Override public void Method () {System.out.println ("IMP adalah B"); } @Override public string toString () {return "b"; }}Metode ToString () ditulis ulang di kelas implementasi, dan Anda dapat menyesuaikan string. Saat Anda melewati string yang ditentukan saat dipanggil, Anda bisa mendapatkan kacang yang sesuai.
2. Mendaftar Menulis:
@Service ("register") Register kelas publik mengimplementasikan inisialisasi, ApplicationContextAware {private Map <String, ServiceInterface> serviceImplMap = new HashMap <> (); Private ApplicationContext ApplicationContext; // Dapatkan konteks Spring @Override public void setApplicationContext (ApplicationContext ApplicationContext) melempar BeansException {this.applicationContext = ApplicationContext; } // Dapatkan semua kacang dari kelas implementasi antarmuka dan masukkan ke dalam peta sesuai dengan aturan yang telah Anda tetapkan, @Override public void afterpropertiesset () melempar Exception {MAP <String, ServiceInterface> beanMap = applicationContext.getBeansOfType (serviceInterface.class); // Kode berikut adalah memasukkan kacang ke dalam peta sesuai dengan aturan yang telah Anda tetapkan, dan aturan saya di sini adalah kuncinya: service.tostring (); Nilai: Bean // Saat menelepon, string spesifik parameter yang diteruskan ke service.toString () bisa mendapatkan kacang yang sesuai // Anda juga tidak bisa melakukan operasi berikut di sini, cukup gunakan beanmap secara langsung. Saat menelepon, nama bean dilewati (serviceInterface) untuk (serviceInterface serviceImpl: beanMap.values ()) {serviceImplmap.put (serviceImpl.toString (), serviceImpl); }} public serviceInterface getServiceImpl (string name) {return serviceImplmap.get (name); }} 3. Kelas Pengujian:
@Resourceregister Register; @Testpublic void testService () {serviceInterface service = register.getServiceImpl ("a"); service.method (); ServiceInterface service2 = register.getServiceImpl ("b"); service2.method ();}Hasil operasi ditunjukkan pada gambar:
Komentar:
Setelah pemuatan musim semi, dapatkan metode untuk menerapkan Context:
Menerapkan aplikasi antarmuka ApplicationContextAware, Spring's ApplicationContext dapat diperoleh selama proses pemuatan kacang. Ini sangat penting. ApplicationContext adalah konteks aplikasi pegas. Sejumlah besar konten kontainer musim semi dan informasi termasuk kacang apa pun dapat diperoleh dari ApplicationContext.
@Component ("InformerRegistry") Kelas Akhir Public InformerRegistry mengimplementasikan ApplicationContextAware {private applicationContext ApplicationContext; @Override public void setApplicationContext (ApplicationContext ApplicationContext) melempar BeansException {this.applicationContext = ApplicationContext; }} Untuk antarmuka ekstensi kacang yang biasa digunakan, silakan merujuk ke: http://www.cnblogs.com/xrq730/p/5721366.html
Melihat:
Musim semi dimulai ketika Anda menggunakan metode berikut untuk mendapatkan konteks musim semi. Jika Anda menulis metode berikut beberapa kali, beberapa kontainer musim semi akan mulai menyalin kode sebagai berikut: ApplicationContext ctx = classpathxmlapplicationContext baru ("classpath: meta-inf/spring/*. Xml");
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.