ประเภทแรก: การกำหนดค่าคำอธิบายประกอบ AOP
การกำหนดค่าคำอธิบายประกอบ AOP (นำไปใช้โดยใช้ไลบรารีคลาส APASSIONJ) โดยแบ่งออกเป็นสามขั้นตอน:
1. ใช้คำอธิบายประกอบ @Aspect เพื่อกำหนดส่วนกำหนดจุดเข้า (@pointcut) และประเภทการแจ้งเตือน (@Before,@afterreturning,@@,@หลังการยก,@รอบ ๆ )
2. พัฒนาชั้นเรียนที่ต้องสกัดกั้น
3. กำหนดค่าส่วนหนึ่งใน XML ในกรณีนี้มันจะได้รับการจัดการโดยคอนเทนเนอร์ Spring AOP
นอกจากนี้คุณต้องอ้างอิงแพ็คเกจ JAR ของ AspectJ: AspectJweaver.jar Aspectjrt.jar
ตัวอย่าง:
user.javapackage com.bjsxt.model; () {ส่งคืนรหัสผ่าน; {โมฆะสาธารณะบันทึก (ผู้ใช้ผู้ใช้);
ใช้อินเทอร์เฟซ:
com.bjsxt.dao.impl; เป็นโมฆะบันทึก (ผู้ใช้ผู้ใช้) {System.out.println ("ผู้ใช้ save11d!");
Operation Class:
com.bjsxt.service; นำเข้า Javax.annotation.resource; นำเข้า com.bjsxt.dao.userdao; นำเข้า com.bjsxt.model.user; ; userdao;} โมฆะสาธารณะทำลาย () {system.out.println ("ทำลาย")
เข้าร่วม AOP
แพ็คเกจ com.bjsxt.aop; แง่มุม; นำเข้า org.aspectj.lang.annotation. ก่อน; . .Model .USER)) ")*/ @Before (" myMethod () ") โมฆะสาธารณะก่อน () {system.out.println (" method staet ");} @after (" mymethod () ") โมฆะสาธารณะหลังจากนั้น () {System.out.println ("วิธีการหลังจาก");} @afterreturning ("การดำเนินการ (สาธารณะ*com.bjsxt.dao ..*.*(.. ))") .println ("วิธีการใหม่"); ");}}
ไฟล์กำหนดค่า
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org" /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.springframework.org/sche ma/aop "xsi: xsi "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://ww.springframework //www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc Hema/Aop/Spring-a -3.1 .xsd "> <!-เพื่อเพิ่ม 2 บรรทัดสุดท้าย-> <บริบท: Annotation-config /> <บริบท: Component-Scan base-package =" com.bjsxt " /> <!-การสแกนอัตโนมัติ -> <AOP: ASPASTJ-AUTOPROXY/> <!-เพื่อเพิ่มบรรทัดนี้-> </ebeans>
คลาสทดสอบ:
แพ็คเกจ com.bjsxt.service; นำเข้า org.junit.test; ผกผันของการควบคุมระดับสาธารณะ userserviceTest {@test โมฆะสาธารณะ testadd () โยนข้อยกเว้น {classpathxmlapplicationcontext ctx = ใหม่ classpathxmlapplic ationcontex Println (Service.getClass ());
ผลลัพธ์:
คลาส com.bjsxt.service.userservice $$ enhancerbycglib $$ 7b201784method สถิติวิธีการบันทึก 11d! วิธีการกลับมาใหม่หลังจาก ###
สังเกต:
@Aspect: หมายความว่าคลาสนี้เป็นคลาส facet
@componet: เนื่องจากฤดูใบไม้ผลิจำเป็นต้องได้รับการจัดการเป็นคลาสแทนเจนต์จึงต้องเพิ่มการเริ่มต้นคลาสนี้ในการจัดการฤดูใบไม้ผลิระหว่างการเริ่มต้น
@befoe: ตรรกะของจุดเข้า (คำแนะนำ)
การดำเนินการ…: ไวยากรณ์จุดตัด
ประเภทที่สอง: การกำหนดค่า XML AOP
เช่นเดียวกับด้านบน: เพียงแค่ไฟล์การกำหนดค่าแตกต่างกัน
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org" /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.springframework.org/sche ma/aop "xsi: xsi "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://ww.springframework //www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc Hema/Aop/Spring-a -3.1 .xsd "> <!-เพื่อเพิ่ม 2 บรรทัดสุดท้าย-> <บริบท: Annotation-config /> <บริบท: Component-Scan base-package =" com.bjsxt " /> <bean id =" loginterceptor "> </ebean> <aop: config> <aop: pointcut expression =" การดำเนินการ (สาธารณะ * com.bjsxt.service .. *. เพิ่ม (.. )) "id =" servicePointCut " /> <aop: id id = "lO gaspect" ref = "loginterceptor"> <aop: ก่อนวิธีการ = "ก่อน" pointcut-ref = "servicePointcut"/> </aop: แง่มุม> </aop: config> </ebeans>
<beans> ต่อไปนี้คือแท็กการกำหนดค่าสปริงและคุณสมบัติที่สำคัญหลายประการในถั่ว:
xmlns:
มันเป็นรูปแบบการแยกวิเคราะห์เอกสาร XML เริ่มต้นนั่นคือถั่วสปริง ที่อยู่คือ http://www.springframework.org/schema/beans
โดยการตั้งค่าคุณสมบัตินี้คุณลักษณะทั้งหมดที่ประกาศในถั่วสามารถใช้โดยตรงผ่าน <> เช่น <bean> ฯลฯ
XMLNS: XSI:
มันเป็นข้อกำหนดที่ XML ต้องปฏิบัติตาม
XMLNS: AOP:
นี่คือประเด็นสำคัญและเป็นข้อกำหนดบางประการที่เราต้องใช้ที่นี่ซึ่งเกี่ยวข้องกับ AOP ที่เน้นแทนเจนต์
xmlns: tx:
เนื้อหาการกำหนดค่าที่เกี่ยวข้องกับธุรกรรมในฤดูใบไม้ผลิ
ไฟล์ XML สามารถประกาศข้อกำหนดการแยกวิเคราะห์ความหมายเริ่มต้นได้เท่านั้น
ตัวอย่างเช่นใน XML ข้างต้นถั่วเพียงตัวเดียวคือค่าเริ่มต้นและอื่น ๆ ที่ต้องใช้ผ่านแท็กเฉพาะเช่น AOP ซึ่งมีคุณลักษณะมากมาย . ตัวอย่างเช่น AOP: config ด้านบน
ในทำนองเดียวกันหาก XMLNs เริ่มต้นถูกกำหนดค่าด้วยข้อกำหนดการแยกวิเคราะห์ความหมายที่เกี่ยวข้องกับ AOP คุณสามารถเขียนแท็กเช่น config ใน XML ได้โดยตรง
ข้างต้นเป็นวิธีการกำหนดค่าสองอย่างของ Spring AOP คุณเข้าใจหรือไม่? มีบทความเพิ่มเติมเกี่ยวกับวิธีการกำหนดค่า Spring AOP ที่จะแบ่งปันกับคุณในภายหลัง