wadah orangtua-anak musim semi
Wadah konteks umum musim semi dapat dibagi menjadi ayah dan anak, wadah induk dan wadah anak. ** Wadah induk terlihat oleh wadah anak, dan wadah anak tidak terlihat oleh wadah induk **.
Untuk MVC Musim Semi tradisional, wadah MVC Spring adalah wadah anak, yaitu wadah yang sesuai dengan ServletDispatcher adalah wadah anak, dan konfigurasi di web.xml adalah wadah induk melalui properti ContextConfiglocation dari ConextLoaderRistener.
Gunakan skenario wadah ayah dan anak
Tujuan utama dari wadah ayah-anak adalah isolasi konteks. Pertimbangkan salah satu skenario berikut.
Project-API perlu menghias beberapa metode dalam layanan proyek dan menghiasnya, seperti mendekorasi layanan pelanggan. Kelas yang dihiasi adalah CachedCustomerService. Jadi, sekarang proyek-API berisi dua layanan pelanggan, satu adalah layanan pelanggan dari layanan proyek, dan yang lainnya adalah CachedCustomerservice. Pada saat ini, jika semua file konfigurasi proyek proyek-API dimuat melalui konteks, masalah pasti akan muncul (praktik yang biasa adalah menggunakan tag impor untuk mengimpor semuanya). Karena, layanan pays dalam proyek disuntikkan ke layanan pelanggan melalui standar @Resource, mirip dengan yang berikut ini
@SerivcePublic Class payservice {@resourcePrivate cusserervice cusservice;}Larutan
Pada saat ini, karena konteks menyuntikkan properti layanan pelanggan, dua layanan bea cukai ditemui. Itu tidak dapat menafsirkan layanan mana yang harus disuntikkan.
Tentu saja, beberapa orang akan mengatakan, mengubah properti sumber daya PayService dan menentukan yang mana yang harus disuntikkan. Namun, jika proyek-service.jar adalah perpustakaan pihak ketiga, mengubah kode menjadi tidak layak kecuali jika kode sumber diperoleh.
Pada saat ini, masalah ini dapat diselesaikan melalui wadah orang tua-anak.
Masukkan layanan proyek dalam wadah induk, dan semua kacang proyek-API dimuat dalam wadah anak.
Dengan asumsi bahwa file konfigurasi konteks proyek-API adalah proyek-api.xml, metode implementasi adalah sebagai berikut.
1. Tentukan proyek-total.xml
<bean id = "serviceContext"> <constructor-Arg> <value> classpath: Project-Service.xml </ value> </constructor-Arg> </bean> <bean id = "apicontext"> <constructor-Arg> <value> classpath: Project-APi.xml </value> </constructor> <value> classpath: Project-APi.xml </value> bean = "serviceContext"/> </constructor-Arg> </bean>
2. Dalam konfigurasi konteks web.xml, berikut ini.
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:project-total.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class> org.springframework.web.context.contextLoaderListener </listener-class> </engeaner>
ServiceContext adalah wadah induk dan apicontext adalah wadah anak, sehingga serviceContext tidak dapat melihat apicontext, dan apicontext dapat melihat efek serviceContext.
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.