Kata pengantar
Ada banyak cara untuk menyuntikkan contoh di musim semi, tetapi karena urutan inisialisasi yang berbeda, metode injeksi berdasarkan anotasi rentan terhadap kegagalan untuk disuntikkan dengan benar.
Artikel ini akan memperkenalkan cara berbasis dinamis untuk mengekstraksi kacang yang dikelola musim semi dalam proyek nyata. Saya tidak akan mengatakan banyak hal di bawah ini, mari kita lihat perkenalan terperinci bersama.
1. Suntikkan contoh berdasarkan pelabelan
Ketika kacang diinisialisasi, objek yang tergantung pada harus diinisialisasi. Jika objek yang disuntikkan diinisialisasi lebih lambat dari objek saat ini, objek yang disuntikkan akan menjadi nol.
1.1 @Autowired
Memuat kacang yang dikelola pegas berdasarkan jenis. Secara default, kacangnya harus ada. Jika kacangnya nol, properti yang diperlukan dapat diatur ke false. Untuk detail spesifik, silakan merujuk ke kode sumber:
@Target ({elementType.constructor, elementType.method, elementType.parameter, elementType.field, elementType.annotation_type})@retention (retentionPolicy.runtime)@documentedpublic@interface autowired {/*** Deklarasikan apakah dependensi yang dianotasi. *Default ke {@code true}.*/Boolean diperlukan () default true;}Jika Anda perlu menyuntikkan kacang berdasarkan perintah, Anda perlu menggunakan @Qualifier untuk memberi label namanya. Contoh kode adalah sebagai berikut:
@Autwired@kualifikasi ("beanname") beantype beanobj pribadi;Lingkup aplikasi: Variabel di atas, metode setter dan konstruktor.
Sumber: Kerangka Pegas
1.2 @Inject
Disediakan oleh javax.inject.inject, itu secara otomatis dirakit berdasarkan jenis. Jika Anda perlu mentransfer sesuai namanya, Anda perlu menggunakan @named bersamaan dengannya. Penggunaan ini sangat mirip dengan @Autowired yang disediakan oleh Spring Framework.
Lingkup Aplikasi: Variabel, Metode Setter, Konstruktor
Sumber: JSR330 Paket Ekstensi Javax
Contoh kode:
@Suntikan@bernama ("beanname") beantype bean;1.3 @Resource
Standarnya adalah injeksi perakitan dengan nama. Hanya ketika kacang yang cocok dengan nama tidak dapat ditemukan akan suntikan berdasarkan jenis. Ini disediakan setelah JDK 1.6.
Lingkup Aplikasi: Dapat diterapkan pada variabel dan metode setter
Sumber: Disediakan setelah JDK 1.6
Contoh Penggunaan Kode:
@Resource (name = "myBeanName") BeanType Bean Private;
2. Metode Injeksi Dinamis
Ide: Gunakan ApplicationContextAware untuk mendapatkan referensi ApplicationContext, dan kemudian secara dinamis dapatkan objek berdasarkan ApplicationContext.
Kode implementasi adalah sebagai berikut:
@Componentpublic class SpringContextUtil implements ApplicationContextAware {// Spring application context environment private static ApplicationContext applicationContext;/** Implement the callback method of the ApplicationContextAware interface and set the context environment** @param applicationContext*/public void setApplicationContext(ApplicationContext applicationContext) {SpringContextUtil.applicationContext = applicationContext;}/*** @return ApplicationContext*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** Get object** @param name* @return Object* @throws BeansException*/public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}}Setelah itu, Anda dapat secara dinamis mendapatkan instance kacang yang diperlukan dalam kode:
BeanType bean = springcontextutil.getbean ("beanname")Bukankah sangat mudah digunakan?
Meringkaskan
Di sini kami merangkum berbagai cara menyuntikkan kacang ke musim semi, masing -masing dengan kelebihan dan kekurangannya, dan Anda dapat memilih untuk menggunakannya.
Oke, di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.