AOP พร้อม Spring Framework
องค์ประกอบสำคัญอย่างหนึ่งของ Spring Framework คือไฟล์ Aspect oriented programming (AOP)กรอบ. Aspect-Oriented Programming ทำให้เกิดการแยกตรรกะของโปรแกรมออกเป็นส่วนต่างๆที่เรียกว่าข้อกังวล เรียกฟังก์ชันที่ครอบคลุมหลายจุดของแอปพลิเคชันcross-cutting concernsและความกังวลข้ามมิติเหล่านี้เป็นแนวคิดที่แยกออกจากตรรกะทางธุรกิจของแอปพลิเคชัน มีตัวอย่างที่ดีหลายประการเช่นการบันทึกการตรวจสอบธุรกรรมที่เปิดเผยความปลอดภัยการแคชเป็นต้น
หน่วยหลักของโมดูลาร์ใน OOP คือคลาสในขณะที่ใน AOP หน่วยของโมดูลาร์คือด้าน Dependency Injection ช่วยให้คุณแยกวัตถุแอปพลิเคชันของคุณออกจากกันและ AOP ช่วยให้คุณแยกข้อกังวลข้ามตัดออกจากวัตถุที่กระทบ AOP เป็นเหมือนทริกเกอร์ในภาษาโปรแกรมเช่น Perl, .NET, Java และอื่น ๆ
โมดูล Spring AOP ให้ตัวดักจับเพื่อสกัดกั้นแอปพลิเคชัน ตัวอย่างเช่นเมื่อมีการเรียกใช้เมธอดคุณสามารถเพิ่มฟังก์ชันพิเศษก่อนหรือหลังการเรียกใช้เมธอดได้
คำศัพท์ AOP
ก่อนที่เราจะเริ่มทำงานกับ AOP ขอให้เราทำความคุ้นเคยกับแนวคิดและคำศัพท์ของ AOP ข้อกำหนดเหล่านี้ไม่เฉพาะเจาะจงสำหรับ Spring แต่เกี่ยวข้องกับ AOP
ซีเนียร์ No | เงื่อนไขและคำอธิบาย |
---|---|
1 | Aspect นี่คือโมดูลที่มีชุด API ที่ให้ข้อกำหนดการตัดขวาง ตัวอย่างเช่นโมดูลการบันทึกจะถูกเรียกว่าด้าน AOP สำหรับการบันทึก แอปพลิเคชันสามารถมีหลายแง่มุมขึ้นอยู่กับความต้องการ |
2 | Join point สิ่งนี้แสดงถึงจุดในแอปพลิเคชันของคุณที่คุณสามารถเสียบด้าน AOP ได้ คุณสามารถพูดได้ว่าเป็นสถานที่จริงในแอปพลิเคชันที่จะดำเนินการโดยใช้ Spring AOP framework |
3 | Advice นี่คือการดำเนินการจริงที่ต้องดำเนินการก่อนหรือหลังการเรียกใช้เมธอด นี่คือส่วนหนึ่งของโค้ดจริงที่ถูกเรียกใช้ในระหว่างการทำงานของโปรแกรมโดย Spring AOP framework |
4 | Pointcut นี่คือชุดของจุดเชื่อมต่ออย่างน้อยหนึ่งจุดที่ควรดำเนินการตามคำแนะนำ คุณสามารถระบุคำสั่งชี้โดยใช้นิพจน์หรือรูปแบบดังที่เราจะเห็นในตัวอย่าง AOP ของเรา |
5 | Introduction บทนำช่วยให้คุณสามารถเพิ่มวิธีการหรือแอตทริบิวต์ใหม่ให้กับคลาสที่มีอยู่ |
6 | Target object วัตถุที่ได้รับคำแนะนำจากด้านใดด้านหนึ่งหรือมากกว่า วัตถุนี้จะเป็นวัตถุพร็อกซีเสมอหรือเรียกอีกอย่างว่าวัตถุที่แนะนำ |
7 | Weaving การทอผ้าเป็นกระบวนการเชื่อมโยงแง่มุมกับประเภทแอปพลิเคชันหรือวัตถุอื่น ๆ เพื่อสร้างวัตถุที่แนะนำ ซึ่งสามารถทำได้ในเวลาคอมไพล์เวลาโหลดหรือรันไทม์ |
ประเภทของคำแนะนำ
แง่มุมของสปริงสามารถใช้ได้กับคำแนะนำห้าประเภทดังต่อไปนี้ -
ซีเนียร์ No | คำแนะนำและคำอธิบาย |
---|---|
1 | before เรียกใช้คำแนะนำก่อนการดำเนินการตามวิธีการ |
2 | after เรียกใช้คำแนะนำหลังจากการดำเนินการตามวิธีการโดยไม่คำนึงถึงผลลัพธ์ |
3 | after-returning เรียกใช้คำแนะนำหลังจากการดำเนินการเมธอดต่อเมื่อเมธอดดำเนินการสำเร็จ |
4 | after-throwing เรียกใช้คำแนะนำหลังจากการดำเนินการเมธอดต่อเมื่อเมธอดออกจากการยกเว้นเท่านั้น |
5 | around เรียกใช้คำแนะนำก่อนและหลังเรียกใช้วิธีการที่แนะนำ |
การใช้งานด้านที่กำหนดเอง
สปริงรองรับ @AspectJ annotation style แนวทางและ schema-basedแนวทางในการใช้แง่มุมที่กำหนดเอง สองแนวทางนี้ได้อธิบายโดยละเอียดแล้วในส่วนต่อไปนี้
ซีเนียร์ No | แนวทางและคำอธิบาย |
---|---|
1 | ตาม XML Schema แง่มุมถูกนำไปใช้โดยใช้คลาสปกติพร้อมกับคอนฟิกูเรชันตาม XML |
2 | @AspectJ อิง @AspectJ หมายถึงรูปแบบของการประกาศแง่มุมเป็นคลาส Java ปกติที่ใส่คำอธิบายประกอบ Java 5 |