Spring adalah inversi kontrol yang ringan (IOC) dan kerangka kerja kontainer berorientasi tangen (AOP). Bagaimana cara mendapatkan kacang yang dikonfigurasi dalam suatu program?
Bean Factory (com.springframework.beans.factory.beanfactory) adalah antarmuka inti dari kerangka kerja musim semi. Ini menyediakan mekanisme konfigurasi IOC tingkat lanjut. BeanFactory memungkinkan untuk mengelola berbagai jenis objek Java. Konteks aplikasi (com.springframework.context.applicationContext) didasarkan pada beanFactory dan menyediakan lebih banyak fungsi yang berorientasi aplikasi. Ini menyediakan Sistem Acara Dukungan dan Kerangka Kerja Internasional, membuatnya lebih mudah untuk membuat aplikasi praktis. Kami biasanya menyebut BeanFactory sebagai wadah IOC, dan ApplicationContext sebuah konteks aplikasi. Tetapi kadang -kadang demi kenyamanan menulis, kami juga memanggil ApplicationContext Spring Container.
Untuk keperluan keduanya, kita dapat membaginya dengan mudah: beanfactory adalah infrastruktur kerangka kerja musim semi, yang ditujukan untuk musim semi itu sendiri; ApplicationContext adalah untuk pengembang yang menggunakan kerangka kerja Spring. Di hampir semua kesempatan aplikasi, kami langsung menggunakan ApplicationContext alih -alih beanfactory yang mendasarinya.
Ada perbedaan yang signifikan antara inisialisasi ApplicationContext dan BeanFactory: ketika beanfactory menginisialisasi wadah, ia tidak instantiate kacang sampai kacang target diakses untuk pertama kalinya; Sementara ApplicationContext instantiates semua biji instance tunggal saat menginisialisasi konteks aplikasi. Oleh karena itu, waktu inisialisasi ApplicationContext akan sedikit lebih lama dari beanfactory
Artikel ini tidak melibatkan injeksi otomatis melalui @Resource dan @Autowired, dan hanya mendapatkan kacang dalam file konfigurasi pegas melalui ApplicationContext.
Untuk mendapatkan kacang yang dikonfigurasi di XML, yang paling penting adalah mendapatkan org.springframework.context.applicationContext
Metode pertama untuk mendapatkan ApplicationContext:
impor org.springframework.context.applicationContext; impor org.springframework.context.support.filesystemxmlappLicationContext; ApplicationContext ApplicationContext = new FileSyStemXMlappLicationContext ("applicationContext.xml");atau
impor org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlappLicationContext; ApplicationContext ApplicationContext = new ClassPathXMLApplicationContext ("ApplicationContext.xml");Instantiating ApplicationContext dengan cara ini sangat memakan waktu. Cara ini cocok untuk aplikasi yang berdiri sendiri menggunakan kerangka kerja Spring. Hanya disarankan untuk digunakan ketika program perlu secara manual menginisialisasi pegas melalui file konfigurasi. Kelas implementasi utama dari ApplicationContext adalah ClassPathXMLapPlicationContext dan FileSyStemXMLapPlicationContext. Yang pertama memuat file konfigurasi dari ClassPath secara default, dan yang terakhir memuat file konfigurasi dari sistem file secara default.
contoh:
Public Class BeanManager {private static applicationContext context = new classpathxmlapplicationContext ("appcontext.xml"); objek statis public getBean (string beanid) {return context.getBean (beanid);}}Tulis servlet di web.xml, mulailah secara otomatis, dan hubungi BeanManager dalam metode init
init () melempar servletException {beanManager bm = new beanManager (); // opsional, sehingga pegas memuat konfigurasi kacang saat aplikasi web dimulai. // Kalau tidak, itu akan dimuat ketika BeanManager dipanggil untuk pertama kalinya, mempengaruhi kecepatan sekali. }Gunakan beanManager.getbean (string beanid); dalam kode Java untuk mendapatkan instance bean.
Metode kedua untuk mendapatkan ApplicationContext: Dapatkan Objek ApplicationContext melalui kelas alat yang disediakan oleh Spring. Ini adalah metode khusus yang disesuaikan untuk proyek web. Disarankan untuk menggunakannya dalam proyek web. Misalnya:
ServletContext servletContext = request.getSession (). GetserVletContext (); ApplicationContext ac1 = WebApplicationContextUtils .getRequiredWePlicationContext (servletContext sc) applicationContext ac2 = WebApplicationContextUtils .getWeBlicationContext (SERVETCONTEXTEX sc) ac1.getbean ("beanid"); ac2.getbean ("beanid");Dapatkan objek instance ApplicationContext melalui javax.servlet.servletcontext, yang berarti permintaan, sesi, dll. Harus digunakan.
Dengan cara ini, objek ApplicationContext tidak dapat ditetapkan sebagai variabel anggota. Dalam setiap metode tertentu, Anda perlu mendapatkan ServletContext melalui permintaan, sesi, dll. Dan kemudian dapatkan instance ApplicationContext.
Oleh karena itu, metode ini hanya direkomendasikan dalam kasus di mana Anda bisa mendapatkan objek ServletContext dan Anda tidak perlu mendefinisikan objek ApplicationContext sebagai variabel anggota.
Catatan: Saat menggunakan WebApplicationContextUtils untuk mendapatkan instance ApplicationContext, Anda perlu menambahkan org.springframework.web.context.contextLoaderRistener listener di file konfigurasi web.xml, jika tidak objek ApplicationContext tidak dapat diperoleh dan null dikembalikan.
File Konfigurasi: Web.xml
<!-ContextLoaderListener secara otomatis menyuntikkan aplikasi ApplicationContext, dan mendapatkan-> <!-Lokasi pemuatan file konfigurasi pegas-> <Context-param> <param-name> ContextConfigLocation </Par am-name> <param-value> /web-inf/spring/appcontext.xml ,/web-inf/spring/appinterceptor.xml </param-value> </web.context.context
3. Diwarisi dari Abstrak Class ApplicationObjectSupport
Abstrak Class ApplicationObjectSupport menyediakan metode getApplicationContext (), yang dapat dengan mudah mendapatkan ApplicationContext. Ketika pegas diinisialisasi, objek ApplicationContext akan disuntikkan melalui metode SetApplicationContext (ApplicationContext Context) dari kelas abstrak.
4. Diwarisi dari kelas abstrak WebApplicationObjectSupport
Gunakan getWebApplicationContext () untuk mendapatkan org.springframework.web.context.webApplicationContext karena aplikasi web memiliki lebih banyak fitur daripada aplikasi biasa, WebApplicationContext Extends ApplicationContext. WebApplicationContext mendefinisikan root_web_application_ context_attribute yang konstan. Ketika konteks dimulai, instance WebApplicationContext ditempatkan dalam daftar atribut ServletContext dengan kunci ini. Oleh karena itu, kami dapat secara langsung mendapatkan WebApplicationContext dari wadah web melalui pernyataan berikut:
WebApplicationContext wac = (WebApplicationContext) ServletContext.GetAttribute (WebApplicationContext.root_web_application_context_attribute);
5. Menerapkan antarmuka ApplicationContextAware
Menerapkan metode SetApplicationContext (ApplicationContext Context) dari antarmuka ini dan simpan objek ApplicationContext. Ketika pegas diinisialisasi, objek ApplicationContext disuntikkan melalui metode ini.
Metode ketiga, keempat dan kelima semua memerlukan mengkonfigurasi kelas dalam file konfigurasi pegas:
<!-Dengan asumsi bahwa ApplicationContextTool adalah kelas implementasi spesifik yang mewarisi atau mengimplementasikan metode ketiga, keempat dan kelima-> <Bean> </bean>
Kalau tidak, ApplicationContext tidak akan diambil dan nol akan dikembalikan.
Konten di atas memperkenalkan ringkasan metode Spring Bean di Java, saya harap Anda menyukainya.