المقال السابق يشرح إدخال التعليقات التوضيحية Java الاستخدام الأساسي للتعليقات التوضيحية Java ، وينفذ أداة اختبار بسيطة من خلال التعليقات التوضيحية المخصصة ؛ ستقدم هذه المقالة كيفية استخدام AOP لـ Spring Boot لتبسيط معالجة التعليقات التوضيحية المخصصة ، وستشرح هذه المحتويات من خلال تطبيق أداة إحصائيات وقت تنفيذ طريقة بسيطة كأمثلة.
مفهوم AOP
تعد البرمجة الموجهة نحو الجانب (AOP ، التي يتم ترجمتها أيضًا على أنها برمجة موجهة نحو الجانب ، والبرمجة الموجهة نحو المنظور ، والبرمجة الموجهة نحو القسم) مصطلحًا في علوم الكمبيوتر ، في إشارة إلى نموذج البرمجة. يعتمد هذا النموذج على بناء لغة يسمى الجانب ، وهو آلية معيارية جديدة لوصف المخاوف المتقاطعة المنتشرة في الكائنات أو الفئات أو الوظائف.
ينشأ مفهوم الجانب من التحسينات في البرمجة الموجهة للكائنات ، ولكن لا يقتصر على ذلك ، يمكن أيضًا استخدامه لتحسين الوظائف التقليدية. تتضمن مفاهيم البرمجة المتعلقة بالجانب أيضًا بروتوكولات الكائنات الفوقية والمواضيع والمزيج والوفود.
ملاحظة: يأتي التعريف أعلاه من ويكيبيديا الصينية (إذا لم تتمكن من الوصول إليه ، فيمكنك الوصول إليه عن طريق تعديل ملف المضيفين للنظام. 198.35.26.96 Zh.Wikipedia.org #Chinese Wikipedia ، والذي لا يمكن إلا أن يساعد في ذلك. أخبرك مباشرة. ترجمة كلمة AOP غير متسقة بعض الشيء مع الاسم السائد في الصين. الترجمة المحلية الرئيسية لـ AOP هي "البرمجة الموجهة نحو الوجه". لا تلتزم بالاسم ، فقط اعلم أنه يشير إلى نفس الشيء.
أعتقد أنك مرتبك بعد قراءة هذا التعريف. إذا كنت ترغب في الحصول على فهم أعمق ، فيمكنك الذهاب إلى Zhihu لمعرفة كيف يجادل اللاعبون الكبار حول ما هو AOP في البرمجة الموجهة؟ . من الأفضل أن آخذ المثال هنا.
تحضير بيئة AOP في Spring Boot
إدخال وحدات التبعية المقابلة في pom.xml
<!-حزمة تبعية التمهيد الربيع-> <Arnal> <roupiD> org.springframework.boot </rougeid> <StifactId> spring-boot-starter-parent </stifactid> <sored> 1.5.1. <StifactId> Spring-Boot-Starter-AoP </stifactid> </sependency> <!-وحدة التبعية على الويب-> <Rependency> <roupiD> org.springframework.boot </roucid> <StifactId> Spring-Boot-Starter-Web
تنفيذ معالجة طلب الويب البسيط أولاً
وحدة تحكم بسيطة للتعامل مع طلبات الويب.
package com.craneyuan.controller ؛ استيراد com.craneyuan.service.ihelloworldservice ؛ استيراد org.springframework.beans.factory.annotation.autowired org.springframework.web.bind.annotation.requestmethod ؛ استيراد org.springframework.web.bind.annotation.restController ؛ restControllerPublic class helloworldcontroller requestmapping (value = "/hello" ، method = requestMethod.get) سلسلة عامة Hello (اسم السلسلة) {return HelloWorLdService.gethellomessage (name) ؛ }}لن أعرض الرمز لفئة تنفيذ خدمة HelloWorld بسيطة.
package com.craneyuan.service.impl ؛ import com.craneyuan.annotation.analysicActuator ؛ import com.craneyuan.service.ihelloworldservice ؛ import org.springframework.beans.factory.annotation.value ؛ java.util.optional ؛ servicepublic class helloWorldServiceImpl تنفذ ihelloworldservice {public string gethellomessage (اسم السلسلة) {return "hello" + eptaric. }}هذه خدمة الويب البسيطة جاهزة. يمكنك بدء المشروع والاتصال به باستخدام أمر Curl ، على سبيل المثال: Curl -Xget -i "http://127.0.0.1:8080/hello؟name=java". إذا سارت الأمور على ما يرام ، فستحصل على استجابة مثل ما يلي:
http/1.1 200-content-type: text/plain ؛ charset = utf-8-content-length: 11date: thu ، 11 Jan 2018 09:45:38 Gmthello Java
استخدم التعليقات التوضيحية المخصصة لحساب وقت تنفيذ الطريقة
أولاً ، حدد التعليق التوضيحي المستخدم لحساب وقت تنفيذ الطريقة.
package com.craneyuan.annotation ؛ import java.lang.annotation.ElementType ؛ import java.lang.annotation.retention ؛ import java.lang.annotation.reteence ؛ importe java.lang.annotation.target ؛ targetget سلسلة ملاحظة () افتراضي "" ؛}
ثم حدد قسمًا للتعامل مع التعليقات التوضيحية التي حددتها للتو.
package com.craneyuan.aspect ؛ import com.craneyuan.annotation.AnalysisActuator ؛ import org.aspectj.lang.joinpoint ؛ import org.aspectj.lang.annotation.aspect org.slf4j.loggerfactory ؛ استيراد org.springframework.core.annotation.order ؛ استيراد org.springframework.stereotepee.component ؛@sfince@componentpublic class analysactuatoraspection threadlocal <Ngt> begintime = new threadlocal <> () ؛ @pointcut (" @annotation (analysalActuator)") public void servicestatisticistics (AnalysisActuator analysisActuator) {} @before ("serviceStatistics (AnalysicAtaTuator)") public void do (System.CurtIditmeMImImiLiS () log.info ("cy666 ملاحظة: {}" ، analysactuatuator.note ()) ؛ } After ("ServiceStatistics (Analysactuator)") public void doafter (analysisActuator Analysactuator) {log.info ("cy666 statistical time: {} ، ملاحظة: {}" ، system.currentTimEmillis () - begintime.get () ، analysisactuator.note () ؛ }}أخيرًا ، فقط أضف التعليق التوضيحي ANALYSYACTUATOR إلى الطريقة التي تحتاج إلى حساب وقت التنفيذ.
package com.craneyuan.service.impl ؛ import com.craneyuan.annotation.analysicActuator ؛ import com.craneyuan.service.ihelloworldservice ؛ import org.springframework.beans.factory.annotation.value ؛ Java.Util.Optional ؛ servicepublic class helloWorldServiceImpl تنفذ ihelloworldservice {AnalysisActuator (note = "get kat kute method") السلسلة العامة gethellomessage (اسم السلسلة) }}ابدأ المشروع واتصل به عرضًا مع أمر Curl. إذا سارت الأمور على ما يرام ، يمكنك مراقبة السجل المطبوع على الوجه.
... Cy666 الوقت الإحصائي: 4 ، ملاحظة: طريقة للحصول على معلومات الدردشة
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.