ในอดีตเฟรมเวิร์ก Java โดยทั่วไปใช้ XML เป็นไฟล์การกำหนดค่า แต่ตอนนี้เฟรมเวิร์ก Java ยังรองรับ "การกำหนดค่าศูนย์" ตามคำอธิบายประกอบแทนไฟล์การกำหนดค่า XML Struts2, Hibernate และ Spring ได้เริ่มใช้คำอธิบายประกอบแทนไฟล์การกำหนดค่า XML และ Spring3.x มีสามตัวเลือกคือ: การกำหนดค่าที่ใช้ XML, การกำหนดค่าตามคำอธิบายประกอบและการกำหนดค่าที่ใช้ Java
ต่อไปนี้เป็นวิธีการกำหนดค่าสามวิธี ก่อนกำหนด Javabean เป็นครั้งแรก
แพ็คเกจ com.chinalife.dao คลาสสาธารณะ logginuserdao {... // ใช้ในการตั้งค่าวิธีการเริ่มต้นโมฆะ public myinit () {} // ใช้ในการตั้งค่าวิธีการทำลายล้างโมฆะสาธารณะ mydestroy () {}}}1. การกำหนดค่าที่ใช้ XML
<bean id = "logginuserdao" class = "com.chinalife.dao.impl.loginuserdaoimpl" lazy-init = "true" init-method = "myinit" destroy-method = "mydestroy" scope = "Prototype"> ...
ในการกำหนดค่า XML ถั่วจะถูกกำหนดผ่าน <bean> </ebean> และชื่อของถั่วถูกกำหนดผ่านแอตทริบิวต์ ID หรือชื่อ หากไม่ได้ระบุแอตทริบิวต์ ID และชื่อสปริงจะใช้ชื่อคลาสที่ผ่านการรับรองโดยอัตโนมัติเป็นชื่อของถั่ว การฉีดค่าลงในถั่วผ่านแอตทริบิวต์แบบไดนามิกขององค์ประกอบเด็ก <property> หรือ p namespace นอกจากนี้คุณยังสามารถระบุชื่อวิธีการของคลาสการใช้งานถั่วผ่านคุณสมบัติเริ่มต้นและคุณสมบัติของ destory-method ของ <bean> เพื่อตั้งค่าวิธีการใช้ชีวิต (ระบุวิธีการเริ่มต้นมากที่สุดและวิธีการทำลาย) ระบุขอบเขตของถั่วผ่านขอบเขตของ <ถั่ว> ฉันเคยได้ยินเกี่ยวกับแอตทริบิวต์ขี้เกียจของ <bean> ระบุว่าจะชะลอการเริ่มต้นหรือไม่
เมื่อคลาสการใช้งานของถั่วมาจากไลบรารีคลาสบุคคลที่สามเช่นแหล่งข้อมูล, hibernatetemplate ฯลฯ มันไม่สามารถใส่คำอธิบายประกอบข้อมูลในชั้นเรียนและสามารถกำหนดค่าผ่าน XML เท่านั้น และการกำหนดค่าของเนมสเปซเช่น AOP บริบท ฯลฯ สามารถใช้การกำหนดค่าที่ใช้ XML ได้เท่านั้น
2. การกำหนดค่าตามคำอธิบายประกอบ
@Scope ("Prototype") @lazy (true) @component ("loginuserdao") คลาสสาธารณะ loginuserdao {... // ใช้ในการตั้งค่าวิธีการเริ่มต้น @postconstruct โมฆะสาธารณะ myinit () {} // ใช้วิธีการทำลายล้างในคลาสการใช้งานถั่วมีการใช้คำอธิบายประกอบบางอย่างเพื่อเพิ่มความคิดเห็นในชั้นเรียนถั่ว:
・ @component: หมายเหตุประกอบคลาส SpringBean ปกติ (สามารถระบุชื่อถั่วได้และค่าเริ่มต้นคือชื่อคลาสเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็กเมื่อไม่ได้ระบุไว้)
・ @Controller: คำอธิบายประกอบคลาสคอนโทรลเลอร์
・ @Service: คำอธิบายประกอบคลาสตรรกะทางธุรกิจ
・ @Repository: คำอธิบายประกอบคลาส DAO
โดยการติดฉลาก @autowired โดยประเภทการฉีดเข้าคู่ที่ตัวแปรสมาชิกหรือพารามิเตอร์วิธีการคุณยังสามารถใช้ @qualifier เพื่อกำหนดค่าการฉีดตามชื่อ วิธีการเริ่มต้นและวิธีการทำลายที่ระบุโดยการใส่คำอธิบายประกอบ @postconstrut และคำอธิบายประกอบล่วงหน้า (ตามที่สามารถกำหนดได้) ระบุขอบเขตของการกระทำของถั่วผ่าน @Scope ("ต้นแบบ") ระบุการโหลดขี้เกียจของถั่วโดยการติดฉลาก @lazy (จริง) ที่นิยามคลาส
เมื่อคลาสการใช้งานของถั่วได้รับการพัฒนาโดยโครงการปัจจุบันคุณสามารถใช้การกำหนดค่าที่ใช้คำอธิบายประกอบโดยตรงในคลาส Java และการกำหนดค่าค่อนข้างง่าย
3. การกำหนดค่าที่ใช้ Java
@Configuration คลาสสาธารณะ conf {@scope ("prototype") @bean ("loginuserdao") สาธารณะ logginuserdao logginuserdao () {ส่งคืนใหม่ loginuserdao (); -ในคลาส Java ที่ทำเครื่องหมาย @configuration กำหนดถั่วโดยการใส่คำอธิบายประกอบ @bean ในวิธีการเรียน วิธีการจะต้องให้ตรรกะอินสแตนซ์สำหรับถั่ว ชื่อของถั่วสามารถกำหนดผ่านแอตทริบิวต์ @bean ชื่อ ชื่อเริ่มต้นคือชื่อเมธอดหากไม่ได้ระบุ ที่วิธีการให้ใช้ @autowired เพื่อผูกเมธอดเข้ากับพารามิเตอร์แล้วฉีดผ่านรหัสในวิธีการ; นอกจากนี้คุณยังสามารถโทรหาวิธี @Bean ของคลาสการกำหนดค่าสำหรับการฉีด ระบุวิธีการเริ่มต้นหรือทำลายวิธีการเริ่มต้นของ @Bean หรือ DestroyMethod ขอบเขตของการกระทำของถั่วถูกระบุโดยนิยามวิธีการถั่ว ระบุการเริ่มต้นล่าช้าของถั่วโดยการติดฉลาก @lazy ที่นิยามวิธีถั่ว
เมื่อตรรกะของการสร้างอินสแตนซ์ถั่วมีความซับซ้อนมากขึ้นมันจะเหมาะสำหรับการกำหนดค่าคลาส Java
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดในบทความนี้เกี่ยวกับวิธีการกำหนดค่าถั่วทั้งสามในฤดูใบไม้ผลิ 3.x ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!