1. ใช้คำอธิบายประกอบ:
ในไฟล์กำหนดค่าของฤดูใบไม้ผลิ ApplicationContext.xml ให้เพิ่มการสแกนคำอธิบายประกอบ รายการการกำหนดค่ากำหนดค่าการสแกนแพ็กเก็ตที่ระบุเพื่อใช้การฉีดพึ่งพา
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <span style = "font-size: 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: บริบท = "http://www.springframework.org/schema/context XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http:/www.springframework http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://ww.springframework http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/util http://ww.springframework <AOP: APASSIONSJ-AUTOPROXY/> <บริบท: Annotation-config/> <บริบท: Component-Scan base-base-package = "com.test"/> // สถานที่ที่จะสแกน </ebeans>
2. ความคิดเห็นทั่วไป:
@controller@service@autoWired@requestmapping@requestparam@modelattribute@cacheable@cacheflush@resources@postconstruct@predestroy@repository@Component (ไม่แนะนำ)@scope@sessionattributes@initbinder
3. คำอธิบายประกอบฤดูใบไม้ผลิที่ใช้กันทั่วไป:
@Controller (สำหรับเลเยอร์การนำเสนอ)
หลังจากใช้คำอธิบายประกอบ @Controller เพื่อระบุการทำกิจกรรมแล้วหมายความว่าการทำปฏิกิริยาจะถูกส่งไปยังคอนเทนเนอร์สปริงสำหรับการจัดการ จะมีการกระทำที่ชื่อ "useraction" ในคอนเทนเนอร์ฤดูใบไม้ผลิ ชื่อนี้ใช้ตามชื่อคลาส UserAction หมายเหตุ: หาก @Controller ไม่ได้ระบุค่า【 @Controller 】ชื่อถั่วเริ่มต้นเป็นตัวพิมพ์เล็กในตัวอักษรตัวแรกของชื่อคลาส หากคุณระบุค่า【 @controller (value = "useraction") 】หรือ【 @controller ("useraction") 】จากนั้นใช้ค่าเป็นชื่อของถั่ว
useraction ที่นี่ยังใช้คำอธิบายประกอบ @Scope @Scope ("ต้นแบบ") หมายความว่าขอบเขตของการกระทำนั้นถูกประกาศว่าเป็นต้นแบบ คุณสามารถใช้ขอบเขต = "ต้นแบบ" ของคอนเทนเนอร์เพื่อให้แน่ใจว่าแต่ละคำขอมีการดำเนินการแยกต่างหากเพื่อจัดการเพื่อหลีกเลี่ยงปัญหาความปลอดภัยของเธรดในการดำเนินการใน struts สปริงขอบเขตเริ่มต้นคือโหมดซิงเกิลตัน (scope = "Singleton") ซึ่งจะสร้างวัตถุแอ็คชั่นเท่านั้น การเข้าถึงแต่ละครั้งเป็นวัตถุการกระทำเดียวกัน ข้อมูลไม่ปลอดภัย Struts2 ต้องการให้การเข้าถึงแต่ละครั้งสอดคล้องกับการกระทำที่แตกต่างกัน Prope = "Prototype" สามารถมั่นใจได้ว่าวัตถุการกระทำถูกสร้างขึ้นเมื่อมีการร้องขอ
@Controller
@Scope ("Prototype") การเรียนรู้คลาสสาธารณะขยาย baseaction <ผู้ใช้> {}@ Service (ใช้ใน Logic Layer)
โปรดทราบว่ามีการใช้คำอธิบายประกอบ @Service ภายใต้คลาสการใช้งานของอินเทอร์เฟซบริการไม่ใช่ในอินเทอร์เฟซ
สิ่งนี้สะท้อนให้เห็นถึงการผกผันในการควบคุมในฤดูใบไม้ผลิเป็นอย่างดี เราจะไม่ปล่อยให้วัตถุอินสแตนซ์วัตถุตัวเองและพึ่งพาวัตถุอย่างแข็งขัน แต่ใช้คอนเทนเนอร์เพื่อสร้างวัตถุซึ่งได้รับการจัดการโดย IOC ตัวอย่าง:
เมื่อแอ็คชั่นต้องการใช้ UserserViceImpl คุณไม่จำเป็นต้องสร้างอินสแตนซ์ของ UserserViceImpl อย่างแข็งขัน การสร้างอินสแตนซ์ UserserViceImpl ได้รับการส่งมอบให้กับฤดูใบไม้ผลิ ฤดูใบไม้ผลิให้อินสแตนซ์ UserserViceImpl ที่สร้างขึ้นเพื่อดำเนินการและคุณสามารถใช้งานได้โดยตรงหลังจากที่คุณได้รับการดำเนินการ การกระทำสามารถใช้งานได้ทันทีหลังจากสร้างอินสแตนซ์ UserserViceImpl อย่างแข็งขัน แต่จะต้องรอสปริงอย่างอดทนเพื่อสร้างอินสแตนซ์ UserserViceImpl ก่อนที่จะฉีดเข้าสู่การดำเนินการ สิ่งนี้แสดงให้เห็นว่า "การควบคุม" ของแอ็คชั่นผ่านคลาส "UserserViceImpl" ได้รับการ "กลับรายการ" ปรากฎว่าความคิดริเริ่มอยู่ในมือของฉันเอง ฉันต้องใช้อินสแตนซ์คลาส "UserserViceImpl" ฉันสามารถใช้ความคิดริเริ่มเพื่อใช้งานได้ทันที แต่ตอนนี้ฉันไม่สามารถใช้ความคิดริเริ่มไปสู่อินสแตนซ์ใหม่ของอินสแตนซ์คลาส "UserserViceImpl" ได้ พลังของอินสแตนซ์คลาส "UserserViceImpl" ใหม่ได้ถูกนำออกไปในฤดูใบไม้ผลิ เพียงสปริงเท่านั้นอินสแตนซ์ใหม่ของอินสแตนซ์ "UserserViceImpl" และการกระทำเท่านั้นที่สามารถรอให้ฤดูใบไม้ผลิสร้างคลาส "USERSE" หลังจากอินสแตนซ์ของ RVICEIMPL "คลาส" ได้โปรด "สปริงให้อินสแตนซ์ที่สร้างขึ้นของคลาส" UserserViceImpl "เพื่อให้สามารถใช้" ผู้ใช้ UserserviceImpl ทำงานได้ดังนั้นมันจึงสร้างการพึ่งพาผู้ใช้บริการ
@Service ("Userservice") Public Class UserserViceImpl ใช้ UserserVice {}@ repository (สำหรับการจัดการข้อมูล)
ผู้เขียนใช้เครื่องมือในการสร้างโมเดลข้อมูลเลเยอร์เอนทิตีและ Mapper ในสิ่งที่ตรงกันข้ามดังนั้นคำอธิบายประกอบนี้จึงไม่ได้ใช้ แต่นี่เป็นเพียงการฉีดถั่วลงในภาชนะสปริง
@Repository (value = "userDao") คลาสสาธารณะ UserDaoimpl ขยายพื้นฐาน ApressAoImpl <user> {}4. คำอธิบายประกอบ SpringMVC ที่ใช้กันทั่วไป:
@autowired (ฉีดตามประเภท)
หมายถึงตัวแปรสมาชิกคลาสวิธีการและตัวสร้างเพื่อให้งานแอสเซมบลีอัตโนมัติเสร็จสมบูรณ์ พูดง่ายๆก็คือเรียกถั่วและบอกสปริงว่ามีอยู่และมีการจัดการในภาชนะ
@autowired ค้นหาจากบทความ Spring Online ตามประเภทถั่ว ประเภทการลงทะเบียนจะต้องไม่ซ้ำกันมิฉะนั้นจะมีการรายงานข้อยกเว้น
เมื่อคำอธิบายประกอบ @autowired ทำหน้าที่ในประเภทแผนที่หากคีย์ของแผนที่เป็นประเภทสตริงสปริงจะเพิ่มทุกประเภทในคอนเทนเนอร์ลงในประเภทที่สอดคล้องกันของค่าแผนที่และใช้รหัสหรือชื่อของถั่วเป็นคีย์ของแผนที่
@autowired ฟังก์ชั่นอื่นคือถ้ามีการใส่คำอธิบายประกอบในประเภท beanfactory, ประเภท ApplicationContext, ประเภท ResourceLoader, ApplicationEventPublisher ประเภทและประเภท MessagesOrce, Spring โดยอัตโนมัติจะฉีดอินสแตนซ์ของคลาสการใช้งานเหล่านี้โดยไม่ต้องดำเนินการเพิ่มเติม
@autowired
Ireportservice ส่วนตัวรายงาน;
@Resource (ฉีดด้วยชื่อ)
คล้ายกับ @autowired การค้นหา @Resource โดยค่าเริ่มต้นตามชื่อของถั่ว หากไม่พบมันจะค้นหาตามประเภท
@ทรัพยากร
แหล่งข้อมูลส่วนตัวแหล่งข้อมูล; // ฉีดถั่วชื่อ 'DataSource'
@Resource (name = "DataSource")
@Resource (type = dataSource.class)
คำถามเพิ่มเติม: แอสเซมบลีตามประเภทคืออะไรและแอสเซมบลีตามชื่อคืออะไร?
ตามประเภทหมายความว่าเมื่อมีถั่วที่มีประเภทเดียวกับแอตทริบิวต์ที่ระบุในคอนเทนเนอร์สปริงแอตทริบิวต์จะถูกประกอบโดยอัตโนมัติ หากมีถั่วหลายชนิดประเภทนี้จะมีการเรียกใช้ข้อยกเว้นและชี้ให้เห็นว่าไม่สามารถใช้ชุดประกอบอัตโนมัติตามประเภทได้ หากไม่พบถั่วที่ตรงกันจะไม่มีอะไรเกิดขึ้น
ชื่อที่เรียกว่าหมายถึงแอสเซมบลีอัตโนมัติตามชื่อแอตทริบิวต์ รายการนี้จะตรวจสอบถั่วในคอนเทนเนอร์สปริงที่เหมือนกับชื่อแอตทริบิวต์และดำเนินการแอสเซมบลีอัตโนมัติ
@RequestMapping (ที่อยู่แผนที่แผนที่)
คำอธิบายประกอบที่ใช้ในการจัดการการแมปที่อยู่ที่ร้องขอสามารถใช้ในชั้นเรียนหรือวิธีการ สำหรับใช้ในชั้นเรียนทุกวิธีที่แสดงถึงคำขอตอบสนองในชั้นเรียนใช้ที่อยู่นี้เป็นพา ธ พาเรนต์
มีคุณสมบัติหกประการคือ:
1. ค่าวิธีการ;
ค่า: ระบุที่อยู่จริงของคำขอและที่อยู่ที่ระบุสามารถอยู่ในโหมดเทมเพลต URI (ซึ่งจะอธิบายในภายหลัง);
วิธีการ: ระบุประเภทวิธีการที่ร้องขอ, รับ, โพสต์, ใส่, ลบ, ฯลฯ ;
2. บริโภคผลิต
ผู้บริโภค: ระบุประเภทของการส่ง (ประเภทเนื้อหา) ที่จัดการกับคำขอเช่นแอปพลิเคชัน/JSON, ข้อความ/html;
ผลิต: ระบุประเภทเนื้อหาที่ส่งคืนซึ่งจะถูกส่งคืนหากประเภท (ยอมรับ) ในส่วนหัวคำขอมีประเภทที่ระบุ;
3. พารามิเตอร์ส่วนหัว
พารามิเตอร์: ระบุว่าคำขอจะต้องมีค่าพารามิเตอร์บางอย่างก่อนที่จะสามารถประมวลผลวิธีการ
ส่วนหัว: ระบุว่าคำขอจะต้องมีค่าส่วนหัวที่ระบุบางอย่างเพื่อให้วิธีการจัดการคำขอ
@controller@requestmapping ("/bbtforum.do") คลาสสาธารณะ bbtforumcontroller {@requestmapping (params = "method = listboardtopic") สตริงสาธารณะ listboardtopic (int TopicId ผู้ใช้) {}}@requestmapping ("/softpg/downsoftpg.do" method = requestMethod.post) @RequestMapping (value = "/OSU/product/detail.do", params = {"modify = false"}, method = requestMethod.post)@RequestParam (รับค่าของพารามิเตอร์คำขอ)
ตัวอย่างเช่นที่อยู่การเข้าถึงของเราในเบราว์เซอร์คือ: localhost: 8080/hello? id = 1000 และเราได้รับค่า ID ตัวอย่างเช่น:
@RestControllerPublic คลาส hellocontroller {@requestmapping (value = "/hello", method = requestmethod.get) สตริงสาธารณะ sayshello (@requestparam ("id") จำนวนเต็ม) {return "id:"+id; -@PathVaribale (รับข้อมูลใน URL)
@RestControllerPublic คลาส hellocontroller {@requestmapping (value = "/hello/{id}", method = requestmethod.get) สตริงสาธารณะ Sayshello (@PathVariable ("ID") ID) {return "id:"+id; -@ResponseBody (ส่งคืนประเภท JSON)
ฟังก์ชั่น: คำอธิบายประกอบนี้ใช้ในการแปลงวัตถุที่ส่งคืนโดยวิธีการคอนโทรลเลอร์เป็นรูปแบบที่ระบุผ่าน httpmessageConverter ที่เหมาะสมและเขียนลงในพื้นที่ข้อมูลร่างกายของวัตถุตอบสนอง
เวลาที่ใช้: ข้อมูลที่ส่งคืนไม่ใช่หน้าเว็บที่มีแท็ก HTML แต่ใช้เมื่อข้อมูลในรูปแบบอื่น (เช่น JSON, XML ฯลฯ );
สรุป
ข้างต้นคือการวิเคราะห์คำอธิบายประกอบร่วมกันใน SpringMVC SpringMVC ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!