Artikel ini menunjukkan injeksi properti seperti int, string, array, daftar, set, peta, tanggal, dll.
Di antara mereka, injeksi jenis tanggal dicapai dengan editor atribut yang disediakan oleh Spring. Pertama, lima kelas entitas digunakan.
paket com.jadyer.model; impor java.util.date; impor java.util.list; impor java.util.map; impor java.util.set; / *** Injeksi properti umum* @see injeksi int, string, array, daftar, set, peta, tanggal*/ kelas publik bean11 {integer integer private; string pribadi strvalue; string pribadi [] arrayValue; Daftar Pribadi ListValue; set private setValue; peta private MapValue; datevalue tanggal pribadi; / * Setter dan getter untuk tujuh atribut */} paket com.jadyer.model; kelas publik bean22 {private bean33 bean33; Private Bean44 Bean4422; // Injeksi: Tidak relevan dengan nama atribut, tetapi terkait dengan setBean44 () Private Bean55 Bean55; / * Setter dan getter untuk tiga atribut */} paket com.jadyer.model; Kelas Publik Bean33 {Private Integer ID; nama string pribadi; seks string pribadi; / * Setter dan getter untuk tiga atribut */} paket com.jadyer.model; Kelas Publik Bean33 {Private Integer ID; nama string pribadi; seks string pribadi; / * Setter dan getter untuk tiga atribut */} paket com.jadyer.model; Kelas Publik Bean44 {Private Integer ID; nama string pribadi; seks string pribadi; usia bilangan bulat pribadi; /* Setter dan getter dari empat atribut sedikit*/} paket com.jadyer.model; Public Class Bean55 {Private String Password; /* Setter dan getter dari kata sandi sedikit*/} Lalu ada konverter tipe java.util.date khusus kami
paket com.jadyer.util; impor java.beans.propertyeditorsupport; impor java.text.parseexception; impor java.text.simpledateFormat; impor java.util.date; /*** editor properti java.util.date. Setara dengan konverter tipe. Di sini adalah untuk mengonversi string ke tipe tanggal * @see ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Editor Properti Kustom hal -hal, Anda harus mewarisi kelas yang mendukung properti dan menimpa metode setastext () * @see akhirnya, menyuntikkan editor properti khusus ke dalam musim semi, dan kemudian * @see --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void setastext (string text) melempar IllegalArgumentException {System.out.println ("======= UTILDATEPROPERTYEDITOR.SETASTEXT () ===========" + Teks); coba {date date = new SimpleDateFormat (pola) .parse (teks); this.setValue (tanggal); // Catatan: Apa yang dimasukkan di sini adalah objek java.util.date, sehingga waktu output adalah format default} catch (parseException e) {e.printstacktrace (); Lempar IllegalArgumentException baru (teks); // Terus melempar pengecualian ilegal dengan parameter ke atas}}} File ApplicationContext-beans.xml digunakan untuk semua kelas entitas
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/schema.tx" http://www.springframework.org/schema/beans/spring-weans-2.5.xsd http://www.springframework.org/schema/aop http://www.spramework.org/schema http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http:/www.spramework.org/schema/tx/tx <!-Atribut default-lazy-init = "true" dijelaskan dalam baris 49 dari class injectionTest.java-> <!-default-autowire = "byname atau bytype" adalah dua cara untuk secara otomatis merakit kacang yang disediakan oleh SPRI0NG. Untuk detailnya-> <!- *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari *************************************************************************************************************************** dari Output default adalah ======= UTILDATEPROPERTYEDITOR.SESTEXT () ========= 4 Juni 2010-> <!-yaitu, default-init = "true" tidak ditetapkan pada saat ini, yang berarti bahwa nilai pada fakta, jika ada pada fakta, jika ada pada fakta, jika ada pada fakta, jika ada pada fakta, jika ada pada fakta, jika ada di Factex. File Konfigurasi dan Suntikan-> <!-Keuntungan dari ini adalah bahwa jika beberapa konfigurasi dalam file konfigurasi Spring tidak ditulis secara tidak benar, ia dapat dideteksi segera-> <!-File konfigurasi Struts1.x tidak akan memiliki masalah jika suatu kelas ditulis secara tidak benar. Hanya ketika itu benar-benar dieksekusi akan ada masalah-> <!-Untuk musim semi, Anda juga dapat menggunakan atribut yang relevan untuk menunda inisialisasi file konfigurasi, yaitu, default-lazy-init = "true"-> <!-yaitu, ketika benar-benar digunakan, pergi ke objek baru dan menyuntikkannya ke atribut. Ini melibatkan malas, yaitu inisialisasi tunda-> <!-Cukup modifikasi file konfigurasi pegas, seperti <beans xsi: schemalocation = "http: // www ...." default-lazy-init = "true">-> <!-Lingkup tindakan saat ini adalah seluruh file konfigurasi. Demikian pula, atribut init malas dari masing-masing tag <Bean> juga dapat dikonfigurasi secara terpisah-> <!-tetapi ini tidak diatur, tetapi injeksi selesai ketika beanfactory dibuat, yang nyaman untuk memeriksa kesalahan-> <!- ****************************************************************************************************************************************************** --> <bean id="bean11"> <property name="intValue" value="123"/><!-- When injected, the string 123 will automatically convert to int--> <property name="strValue" value="Hello_Spring"/> <property name="arrayValue"> <list> <value>array11</value> <value>array22</value> </list> </property> <property name="listValue"> <list> <value>list11</value> <value>list22</value> </list> </property> <property name="setValue"> <set> <value>set11</value> <value>set22</value> </set> </property> <property name="mapValue"> <map> <entry key="key11" value="value11"/> <entry key="key22" value="value22"/> </map> </property> <property name="dateValue" value="June 4, 2010"/><!-- Here the Date format should be the same as the configuration of applicationContext-editor.xml --> </bean> <bean id="bean22"> <property name="bean33" ref="bean33"/> <property name="bean44" ref="bean44"/> <property name="bean55" ref="bean55"/> </bean> <bean ID = "bean55"> <name properti = "kata sandi" value = "123"/> </ bean> </bean>
File ApplicationContext-Common.xml yang digunakan untuk kelas entitas publik
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/schema.tx" http://www.springframework.org/schema/beans/spring-weans-2.5.xsd http://www.springframework.org/schema/aop http://www.spramework.org/schema http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http:/spramework.org/schema/tx http:spram.spramework.org/schema/tx kacang-> <!-Pertama, tentukan properti abstrak dari tag <bean> ke true, dan kemudian tentukan induknya di <beans> lainnya-> <bean id = "abstractbean" abstract = "true"> <name properti = "id" value = "2"/> <name property = "name" value = "zhang qiling"/ID <value = "value" value "value" value "name" name = "zhang qiling"/<a name = "value =" value "value" value "name" name "nead =" zhang qiling "/<a name =" value = "value" value "value" value "name/bean/bean </bean/qiling"/<name = "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name " Parent = "AbstractBean"/> <bean id = "bean44" parent = "abstractbean"> <name properti = "usia" value = "26"/> </tean> </tages> <!-prototipe bean33 dan a name properti = "" "" "" "" "" "" "NOVE" "" "" value="Zhang San"/> <property name="sex" value="Male"/> </bean> <bean id="bean44"> <property name="id" value="100"/> <property name="name" value="Zhang San"/> <property name="sex" value="Male"/> <property name="age" value="90"/> </bean> -->
File ApplicationContext-Editor.xml yang digunakan untuk editor properti java.util.date
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/schema.tx" http://www.springframework.org/schema/beans/spring-weans-2.5.xsd http://www.springframework.org/schema/aop http://www.spramework.org/schema http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.spramework.org/schema/tx.tx id = "utildatePropertyEditor"> <properti name = "pola" value = "yyyyy mm bulan ddd"/> </ bean> <!-periksa kode sumber dan temukan bahwa metode setCustomeditors disediakan dalam baris 131 dari kelas customEditor = "Anda dapat menyuntikkan-> <bean id customEditor =" Kelas customeditor ", Anda dapat menyuntikkan-> <bean id customEditor =" KECUPATAN/"SOUCTIT" Anda dapat menyuntikkan-> <Bean ID = "CustomEditors =" KECUALIAN "KETERLISAN" KECUALIAN "DUKUPITED", "Bean ID =" CustomEditors = " key = "java.util.date" value-ref = "utildatePropertyEditor"/> </peta> </prop Propert> </tact> <!-Anda juga dapat menggunakan <bean> internal untuk menuliskan hal yang tidak dapat digunakan di dalamnya, tidak dapat digunakan secara internal-<!-dengan cara ini, hanya saja hak untuk menggunakannya, dan eksternal yang tidak dapat digunakan secara internal-<! <bean>--> <!-- Example is as follows-> <!-- <bean id="customEditors"> <property name="customEditors"> <map> <entry key="java.util.Date"> <bean> <property name="pattern" value="yyyyy MM month ddd day"/> </bean> </entry> </map> </property> </bean> -->
Akhirnya, kelas uji unit yang ditulis menggunakan junit3.8
paket com.jadyer.junit; impor junit.framework.testcase; impor org.springframework.context.applicationContext; impor org.springframework.context.support.classpathxmlapplicationContext; impor com.jadyer.model.bean11; impor com.jadyer.model.bean22; Public Class PropertyInjectionTest Extends TestCase {Private ApplicationContext Factory; @Override Protected Void Setup () melempar Exception { /**** ==== Baca satu file konfigurasi ==== **** /// factory = new ClassPathXMLapPlicationContext ("ApplicationContext.xml"); /****====Read multiple configuration files using arrays ====****/ //This way two configuration files will be used as one, on the surface, as two//In fact, internally as one, so in multiple configuration files, the id inside cannot be repeated // But the name attribute can be repeated, just as the difference between the person's ID number and name is the same //String[] configLocations = new String [] {"ApplicationContext.xml", "ApplicationContext-Editor.xml"}; // factory = new ClassPathXMLapPlicationContext (configLocations); /**** ====== Gunakan*pola pencocokan untuk membaca beberapa file konfigurasi ==== ****/// Pepatah populer dalam industri: konvensi lebih baik daripada konfigurasi // jadi ketika ada kesepakatan yang disatukan dan lebih baik, Anda dapat menggunakan fungsi yang disediakan oleh kerangka kerja untuk mengurangi jumlah konfigurasi // Selain itu: jika aplikasi context-*. = new ClassPathXMLapPlicationContext ("ApplicationContext-*. xml"); } /*** Metode ini menunjukkan injeksi atribut umum, termasuk int, string, array, daftar, set, peta, injeksi tanggal* @see di mana injeksi jenis tanggal diimplementasikan dengan bantuan editor properti musim semi* /public void testIncection11 () {// bean11 bean11 = new bean11 (); // Jika Anda sederhana baru, maka atributnya tidak akan disuntikkan. Prasyarat untuk injeksi harus dikeluarkan dari wadah IOC sebelum akan menyuntikkan bean11 bean11 = (bean11) factory.getbean ("bean11"); // Saat ini Bean11 diperoleh dari wadah IOC, sehingga ketergantungannya akan disuntikkan ke System.out.println ("bean11.intvalue =" + bean11.getIntValue ()); System.out.println ("bean11.strvalue =" + bean11.getStrValue ()); System.out.println ("bean11.arrayValue =" + bean11.getArrayValue ()); System.out.println ("bean11.listValue =" + bean11.getListValue ()); System.out.println ("bean11.setValue =" + bean11.getSetValue ()); System.out.println ("bean11.mapValue =" + bean11.getMapValue ()); System.out.println ("bean11.datevalue =" + bean11.getDateValue ()); } / *** Metode ini terutama menunjukkan abstraksi konfigurasi publik untuk mengurangi jumlah konfigurasi* / public void testInjection22 () {bean22 bean22 = (bean22) factory.getbean ("bean22"); System.out.println ("bean22.bean33.id =" + bean22.getBean33 (). GetId ()); System.out.println ("bean22.bean33.name =" + bean22.getBean33 (). GetName ()); System.out.println ("bean22.bean33.sex =" + bean22.getBean33 (). Getsex ()); System.out.println ("bean22.bean44.id =" + bean22.getBean44 (). GetId ()); System.out.println ("bean22.bean44.name =" + bean22.getbean44 (). GetName ()); System.out.println ("bean22.bean44.sex =" + bean22.getBean44 (). Getsex ()); System.out.println ("bean22.bean44.age =" + bean22.getBean44 (). Getage ()); System.out.println ("bean22.bean55.password =" + bean22.getBean55 (). GetPassword ()); }}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.