English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot AOP

يتم تطوير هذا التطبيق عادةً بطريقة متعددة الطبقات. نموذج تطبيق Java التقليدي يحتوي على الطبقات التالية:

طبقة الويب: إنه يستخدم REST أو تطبيق الويب لفتحالخدمات. طبقة الأعمال: إنه يحققمنطق الأعمال:. طبقة البيانات: إنه يحققمنطق التخزين الدائم.

مهام كل طبقة مختلفة، ولكن هناك جوانب شائعة تنطبق على جميع الطبقات تسجيل اللوغ، الأمان، التحقق، المخزن المؤقت، وما إلى ذلك. وتسمى هذه الجوانب الشائعة العناصر التي تتجاوز المجالات.

إذا قمنا بتحقيق هذه العناصر في كل طبقة على حدة، فإن الكود سيصبح أكثر صعوبة في الصيانة. من أجل التغلب على هذه المشكلة، برمجة منحى(AOP) يقدم حلًا لمشاكل العناصر التي تتجاوز المجالات.

تعريف العناصر التي تتجاوز المجالات كجانب. تحديد نقاط التدخل لتعيين أين يجب تطبيق الجوانب.

يؤكد على تعريف العناصر التي تتجاوز المجالات في مكون برمجي متكامل.

AOP

AOP (برمجة منحى)يتمثل في السماح Cross-cutting concernsلتحسين نموذج البرمجة المتكاملة. هذه العناصر التي تتجاوز المجالات مختلفة عن منطق الأعمال الرئيسية. يمكننا إضافة سلوكيات أخرى إلى الكود الموجود دون تعديل الكود نفسه.

نموذج AOP لـ Spring يمكن أن يساعدنا في تحقيق هذه العناصر التي تتجاوز المجالات.

باستخدام AOP، في مكان واحد. يمكننا تعريف كيفية تطبيق هذه الوظيفة ومكانها بحرية دون تعديل الفئة التي يتم إضافة وظيفة جديدة إليها. الآن يمكن تحويل module الاهتمامات المقطعة إلى فئات خاصة تُسمى aspect.

aspect اثنينمزايا

أولاً، الآن يتم تركز منطق كل نقطة الاهتمام في مكان واحد، وليس موزعًا عبر مكتبة الكود بأكملها. ثانيًا، يحتوي module التجاري فقط على رمز الاهتمام الرئيسي. تم نقل النقاط الثانوية إلىaspect.

كل aspect له مسؤوليات لتنفيذها، يُسمى Adviceيمكننا إدراج وظائف aspect في البرنامج في نقاط الاتصال الواحدة أو أكثر.

مزايا AOP

تم تنفيذه باستخدام Java النقي. لا يحتاج إلى عملية ت 编ير خاصة. يستند فقط على نقاط الاتصال تنفيذ الطريقة. يقدم فقط التشكيل أثناء التشغيل. هناك نوعان من وكلاء AOP: وسيط JDKو CGLIB proxy.

Cross-cutting concerns

Cross-cutting concerns هي النقاط التي نريد تنفيذها في عدة أماكن في التطبيق. إنها تؤثر على التطبيق بأكمله.

AOP terminology

النقطة: aspect هو وحدة تعبئة التي تحتوي علىadviceوpointcuts، وتقدمcross-cuttingيمكن أن يكون هناك العديد من aspects. يمكننا استخدام @Aspect أوصاف الفئات العادية لتحقيق aspect. نقطة الحساسية: نقطة الاتصال هي تعبير يحدد نقطة الاتصال التي يتم تنفيذ نصائح Advice فيها. يمكننا استخدامexpressionsأوpatternsيحدد نقطة الاتصال باستخدام أنواع مختلفة من التعبيرات التي تتطابق مع نقطة الاتصال. في إطار عمل Spring Framework، يتم استخدام AspectJ Language of pointcut expression. Join point: نقطة الاتصال هي النقطة في التطبيق حيث يتم تطبيق aspect. AOP aspectفي AOP، يمكن أن تكون نقطة الاتصالتنفيذ الطريقة، معالجة الاستثناءات، تغيير قيمة المتغيرات في الجسم.، إلخ. النصائح: نصائح Advice هي النقاط التي يتم تنفيذها قبل تنفيذ الطريقةbeforeأوafterإجراءات. هذا الفعل هو قطعة من الكود التي يتم استدعاؤها أثناء تنفيذ البرنامج. يحتوي إطار عمل Spring AOP علىخمسنصائح من نوع في نصائح before, after, after-returning, after-throwing ونصائح around advice. هي مخصصة لـنصائح join point. سنناقش هذه النصائح بشكل أعمق في هذا الفصل. Target object: يُسمى الجسم الذي تطبق عليه النصائحtarget object، دائمًا ما يكون الجسم المستهدفproxiedهذا يعني إنشاء فرع من الفئة التي تغطي الطريقة المستهدفة أثناء التشغيل، ويشمل تكوين النصائح. الدمج: هي عملية دمج النقاط مع أنواع أخرى من التطبيقات.دمج النقاطعملية. يمكننا فيفي وقت التشغيل، في وقت التحميلوفي وقت التجميعالدمج.

وسيط: إنه كائن تم إنشاؤه بعد تطبيق نصائح على الكائن الهدف، ويسمى وسيط . قام Spring AOP بتنفيذ وسيط JDK، لإنشاء كائن وسيط باستخدام دالة AspectJ و نصائح. هذه تُسمى كائنات وسيطة AOP.

AOP و OOP

الفرق بين AOP و OOP هو كالتالي:

AOP OOP
النقطة: هي وحدة شيفرة م封装ة للنقاط الحساسة، النصائح والخصائص.الفئة: هي وحدة شيفرة م封装ة للم方法和 الخصائص.
نقطة الحساسية: إنه يحدد مجموعة من نقاط الدخول لتنفيذ النصائح.توقيع الطريقة: . إنها تحدد نقطة الدخول إلى جسم الطريقة.
النصائح: هي تنفيذ اهتمامات متعددة المجالات.جسور الطريقة: هي تنفيذ مشاكل منطق الأعمال.
الموجه: يُنشئ الشيفرة باستخدام نصائح (مصدر أو كائن). المحرر: يُحوّل الشيفرة المصدر إلى شيفرة الهدف.

Spring AOP و AspectJ

الفرق بين AOP و OOP هو كالتالي:

قبل تنفيذ AOP في التطبيق، يجب علينا إضافة إلى ملف pom.xml AspectJ
يحتاج إلى عملية تجميع منفصلة.يحتاج إلى محرر AspectJ.
يُسمح لها فقط بالنقاط الحساسة لتنفيذ الطرق.يدعم جميع النقاط الحساسة.
يمكن تنفيذها على الأوبجكتات التي تُدار من قبل خزان Spring.يمكن تنفيذها على جميع الكائنات في المجال.
يُسمح لها فقط بالدمج على مستوى الطريقة.يمكنها التأثير على الحقول، الطرق، المكونات، المبادئ التوجيهية، الفئات النهائية، إلخ.

نوع نصائح AOP

نصائح AOP لها خمس أنواع، مثلما يلي:

نصائح قبل: نصائح بعد: نصائح حول: بعد رمي بعد العودة

نصائح قبل: النصائح التي تُنفذ قبل نقطة الاتصال تُدعى قبل الإشعار. نستخدم @Before التعليقات تُحدد النصائح كإشعارات قبل.

نصائح بعد: النصائح التي تُنفذ بعد نقطة الاتصال تُسمى إشعار بعد. نستخدم @After التعليقات تُحدد نصائح كإشعارات بعد.

نصائح حول: النصائح التي تُنفذ قبل وبعد نقطة الاتصال هي

بعد رمي: 在连接点抛出异常时执行的Advice。

نصيحة يتم تنفيذها عند حدوث استثناء في نقطة الاتصال After Returning:

نصيحة يتم تنفيذها عند تنفيذ النموذج بنجاح قبل تنفيذ AOP في التطبيق، يجب علينا إضافة إلى ملف pom.xml Spring AOP

الاعتماد

Spring Boot Starter AOP

مثال
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.2.RELEASE</version>

</dependency>