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