บทความนี้แสดงให้เห็นถึงการฉีดคุณสมบัติเช่น int, string, อาร์เรย์, รายการ, ชุด, แผนที่, วันที่ ฯลฯ
ในหมู่พวกเขาการฉีดประเภทวันที่ทำได้ด้วยตัวแก้ไขแอตทริบิวต์ที่จัดทำโดยฤดูใบไม้ผลิ ครั้งแรกมีการใช้คลาสเอนทิตีทั้งห้า
แพ็คเกจ com.jadyer.model; นำเข้า java.util.date; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า java.util.set; / *** การฉีดคุณสมบัติทั่วไป* @See การฉีด int, string, array, รายการ, ชุด, แผนที่, วันที่*/ คลาสสาธารณะ bean11 {integer จำนวนเต็มส่วนตัว; สตริงส่วนตัว strvalue; สตริงส่วนตัว [] ArrayValue; รายการส่วนตัว ListValue; ชุดส่วนตัว setValue; แผนที่ส่วนตัวแผนที่; วันที่ส่วนตัว datevalue; / * setter และ getter สำหรับเซเว่นแอตทริบิวต์ */} แพ็คเกจ com.jadyer.model; Public Class Bean22 {Private Bean33 Bean33; ถั่วส่วนตัว 44 Bean4422; // การฉีด: ไม่เกี่ยวข้องกับชื่อแอตทริบิวต์ แต่เกี่ยวข้องกับ setBean44 () ถั่วส่วนตัว 55 Bean55; / * setter และ getter สำหรับสามแอตทริบิวต์ */} แพ็คเกจ com.jadyer.model; Public Class Bean33 {ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; เซ็กซ์สตริงส่วนตัว; / * setter และ getter สำหรับสามแอตทริบิวต์ */} แพ็คเกจ com.jadyer.model; Public Class Bean33 {ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; เซ็กซ์สตริงส่วนตัว; / * setter และ getter สำหรับสามแอตทริบิวต์ */} แพ็คเกจ com.jadyer.model; Public Class Bean44 {ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; เซ็กซ์สตริงส่วนตัว; อายุจำนวนเต็มส่วนตัว /* setter และ getter ของคุณลักษณะทั้งสี่คือแพ็คเกจเล็กน้อย*/} com.jadyer.model; Public Class Bean55 {รหัสผ่านสตริงส่วนตัว; /* setter และ getter ของรหัสผ่านเล็กน้อย*/} จากนั้นมีตัวแปลงประเภท java.util.date ที่กำหนดเองของเรา
แพ็คเกจ com.jadyer.util; นำเข้า java.beans.propertyeditorsupport; นำเข้า java.text.parseException; นำเข้า java.text.simpledateFormat; นำเข้า java.util.date; /*** java.util.date Editor เทียบเท่ากับตัวแปลงประเภท นี่คือการแปลงสตริงเป็นวันที่พิมพ์ * @See - - ตัวแก้ไขคุณสมบัติที่กำหนดเองสิ่งที่คุณต้องสืบทอดคลาส PertyEditorSupport และเขียนทับเมธอด setastext () * @see ในที่สุด, ฉีดโปรแกรมแก้ไขคุณสมบัติที่กำหนดเองลงในฤดูใบไม้ผลิแล้ว * @See - เป็นโมฆะ setastext (ข้อความสตริง) พ่น unledalargumentexception {system.out.println ("======= utildatePropertyeditor.setAstastext () ==========" ข้อความ); ลอง {วันที่ = ใหม่ simpledateFormat (รูปแบบ) .parse (ข้อความ); this.setValue (วันที่); // หมายเหตุ: สิ่งที่ใส่ไว้ที่นี่คือวัตถุ java.util.date ดังนั้นเวลาเอาท์พุทคือรูปแบบเริ่มต้น} catch (parseexception e) {e.printstacktrace (); โยน unlegalargumentException ใหม่ (ข้อความ); // ต่อไปเพื่อโยนข้อยกเว้นที่ผิดกฎหมายโดยมีพารามิเตอร์ขึ้นไป}}}} ไฟล์ ApplicationContext-beans.xml ที่ใช้สำหรับคลาสเอนทิตีทั้งหมด
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://ww.springframework default-lazy-init = "true"> <!-แอตทริบิวต์ default-init = "true" อธิบายไว้ในบรรทัด 49 ของคลาส Injectiontest.java-> <!-ค่าเริ่มต้น-autowire = "byname หรือ bytype" เป็นสองวิธีในการรวบรวมถั่วโดยอัตโนมัติโดย Spri0ng สำหรับรายละเอียด-> <!- - - - - - - - - เมื่อดำเนินการ testinjection22 () เอาต์พุตเริ่มต้นจะเป็น ====== utildatePropertyeditor.setastext () ======= 4 มิถุนายน 2010-> <!-นั่นคือค่าเริ่มต้น-init-init-ไม่ได้ตั้งค่าความเป็นจริงหรือไม่ วัตถุทั้งหมดในไฟล์การกำหนดค่าและการฉีด-> <!-ข้อดีของสิ่งนี้คือหากการกำหนดค่าบางอย่างในไฟล์การกำหนดค่าสปริงถูกเขียนอย่างไม่ถูกต้องสามารถตรวจพบได้ทันที-> <!-ไฟล์การกำหนดค่าของ struts1.x จะไม่มีปัญหาใด ๆ หากคลาสถูกเขียนไม่ถูกต้อง เฉพาะเมื่อมีการดำเนินการจริง-> <!-สำหรับฤดูใบไม้ผลิคุณยังสามารถใช้แอตทริบิวต์ที่เกี่ยวข้องเพื่อชะลอการเริ่มต้นของไฟล์การกำหนดค่านั่นคือ Default-init-init = "true"-> <!-นั่นคือเมื่อใช้จริงแล้วไปที่วัตถุใหม่และฉีดลงในแอตทริบิวต์ สิ่งนี้เกี่ยวข้องกับขี้เกียจนั่นคือการเริ่มต้นล่าช้า-> <!-เพียงแค่แก้ไขไฟล์การกำหนดค่าสปริงเช่น <ถั่ว xsi: schemalocation = "http: // www .... " default-lazy-init = "true">-> <!-ขอบเขตของการกระทำในเวลานี้คือไฟล์การกำหนดค่าทั้งหมด ในทำนองเดียวกันแอตทริบิวต์ Lazy-init ของแท็ก <Bean> แต่ละแท็กสามารถกำหนดค่าแยกต่างหาก-> <!-แต่ไม่ได้ตั้งค่า แต่การฉีดเสร็จสมบูรณ์เมื่อสร้าง beanfactory ซึ่งสะดวกสำหรับการตรวจสอบข้อผิดพลาด-> <!-! ************************************************************************************************************************************************************************************************************* 123 จะแปลงเป็น int-> <property name = "strValue" โดยอัตโนมัติ = "hello_spring"/> <property name = "arrayValue"> <list> <ales> array11 </value> <value> array22 </value> </list> <property name = "setValue"> <et> <value> set11 </value> <value> set22 </value> </set> </คุณสมบัติ> <property name = "MapValue"> <map> <entry key = "key11" value = "value11"/> <entry key = "key22" value = "value22 2010 "/> <!-ที่นี่รูปแบบวันที่ควรเหมือนกับการกำหนดค่าของ ApplicationContext-editor.xml-> </ebean> <bean id =" Bean22 "> <name property =" Bean33 "ref =" Bean33 "/> <property name =" bean44 "bean5 id = "bean55"> <property name = "password" value = "123"/> </ebean> </ebeans>
ไฟล์ ApplicationContext-common.xml ที่ใช้สำหรับคลาสเอนทิตีสาธารณะ
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://ww.springframework.org/schema/ttp:/ การกำหนดค่าโดยใช้ถั่วนามธรรม-> <!-ก่อนอื่นให้ระบุคุณสมบัตินามธรรมของแท็ก <bean> เป็นจริงจากนั้นระบุพาเรนต์ของมันใน <ถั่ว>-> <ถั่ว id = "AbstractBean" Abstract = "true"> <property name = "id" ค่า = "2"/> <ชื่อ id = "bean33" parent = "AbstractBean"/> <Bean ID = "Bean44" Parent = "AbstractBean"> <property name = "age" value = "26"/> </ebean> value = "100"/> <property name = "name" value = "Zhang San"/> <property name = "sex" value = "male"/> </bean> <bean id = "Bean44"> <property name = "id" value = "100"/> </ebean> ->
ไฟล์ ApplicationContext-editor.xml ที่ใช้สำหรับตัวแก้ไขคุณสมบัติ java.util.date
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://ww.springframework id = "utildatePropertyEditor"> <property name = "pattern" value = "yyyyy mm เดือน ddd"/> </ebean> <!-ตรวจสอบซอร์สโค้ดและพบว่าวิธีการ setCustomEditors นั้นมีให้ในบรรทัด 131 ของคลาส CustomEditorConfigurer key = "java.util.date" value-ref = "utildatePropertyeditor"/> </porepropert> </property> </ebean> </epean> <!-คุณสามารถใช้ <Bean> ภายในเพื่อเขียน UtildatePropertyEditor-ไม่สามารถใช้งานได้ภายนอก- แอตทริบิวต์ภายใน <ebean>-> <!-ตัวอย่างมีดังนี้-> <!-<bean id = "customeditors"> <property name = "customeditors"> <perent> <map> <entry key = "java.util.date"> <bean>
ในที่สุดคลาสทดสอบหน่วยที่เขียนโดยใช้ Junit3.8
แพ็คเกจ com.jadyer.junit; นำเข้า junit.framework.testcase; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.support.classpathxmlapplicationContext; นำเข้า com.jadyer.model.bean11; นำเข้า com.jadyer.model.bean22; Public Class PropertyInjectingTest ขยาย TestCase {Private ApplicationContext Factory; @Override ป้องกันการตั้งค่าโมฆะ () พ่นข้อยกเว้น { /**** ==== อ่านไฟล์กำหนดค่าเดียว ==== **** // // โรงงาน = ใหม่ classPathxMlApplicationContext ("ApplicationContext.xml"); /**** ==== อ่านไฟล์การกำหนดค่าหลายไฟล์โดยใช้อาร์เรย์ ==== **** // // ด้วยวิธีนี้ไฟล์การกำหนดค่าสองไฟล์จะถูกใช้เป็นไฟล์หนึ่งบนพื้นผิวเป็นสอง // ในความเป็นจริงภายในหนึ่งเดียวดังนั้นในไฟล์การกำหนดค่าหลายไฟล์ไม่สามารถทำซ้ำได้ String [] {"ApplicationContext.xml", "ApplicationContext-editor.xml"}; // Factory = ใหม่ classPathxMlApplicationContext (การกำหนดค่า); /**** ======= ใช้รูปแบบการจับคู่*เพื่ออ่านไฟล์การกำหนดค่าหลายไฟล์ ==== **** // // คำพูดที่ได้รับความนิยมในอุตสาหกรรม: การประชุมดีกว่าการกำหนดค่า // ดังนั้นเมื่อมีข้อตกลงแบบรวมและดีกว่า classpathxmlapplicationContext ("ApplicationContext-*. xml"); } /*** วิธีนี้แสดงให้เห็นถึงการฉีดแอตทริบิวต์ทั่วไปรวมถึง int, สตริง, อาร์เรย์, รายการ, ชุด, แผนที่, การฉีดวันที่* @see ที่การฉีดประเภทวันที่ถูกนำไปใช้ด้วยความช่วยเหลือของโปรแกรมแก้ไขทรัพย์สินฤดูใบไม้ผลิ* /การทดสอบโมฆะสาธารณะ // ถ้าคุณเป็นคนใหม่ง่ายๆคุณลักษณะของมันจะไม่ถูกฉีด ข้อกำหนดเบื้องต้นสำหรับการฉีดจะต้องนำออกจากภาชนะ IOC ก่อนที่มันจะฉีด Bean11 Bean11 = (Bean11) Factory.getBean ("Bean11"); // ในเวลานี้ Bean11 ได้มาจากคอนเทนเนอร์ IOC ดังนั้นการพึ่งพาของมันจะถูกฉีดลงใน 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 ()); } / *** วิธีนี้ส่วนใหญ่แสดงให้เห็นถึงสิ่งที่เป็นนามธรรมของการกำหนดค่าสาธารณะเพื่อลดปริมาณการกำหนดค่า* / โมฆะสาธารณะ 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 ()); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น