บทความก่อนหน้าการแนะนำของคำอธิบายประกอบ Java อธิบายการใช้งานขั้นพื้นฐานของคำอธิบายประกอบ Java และใช้เครื่องมือทดสอบอย่างง่ายผ่านคำอธิบายประกอบที่กำหนดเอง บทความนี้จะแนะนำวิธีการใช้ AOP ของ Spring Boot เพื่อลดความซับซ้อนของการประมวลผลคำอธิบายประกอบที่กำหนดเองและจะอธิบายเนื้อหาเหล่านี้โดยการใช้เครื่องมือเวลาการดำเนินการตามวิธีการอย่างง่ายเป็นตัวอย่าง
แนวคิด AOP
การเขียนโปรแกรมที่มุ่งเน้นด้านต่าง ๆ (AOP แปลว่าการเขียนโปรแกรมที่มุ่งเน้นด้านการเขียนโปรแกรมมุมมองที่มุ่งเน้นและการเขียนโปรแกรมที่มุ่งเน้นส่วน) เป็นคำศัพท์ในวิทยาศาสตร์คอมพิวเตอร์โดยอ้างถึงกระบวนทัศน์การเขียนโปรแกรม กระบวนทัศน์นี้ขึ้นอยู่กับการก่อสร้างภาษาที่เรียกว่าแง่มุมซึ่งเป็นกลไกแบบแยกส่วนใหม่สำหรับการอธิบายถึงข้อกังวลเกี่ยวกับการตัดขวางที่กระจัดกระจายในวัตถุชั้นเรียนหรือฟังก์ชั่น
แนวคิดของด้านข้างมีต้นกำเนิดมาจากการปรับปรุงในการเขียนโปรแกรมเชิงวัตถุ แต่ไม่ จำกัด เฉพาะสิ่งนี้มันยังสามารถใช้เพื่อปรับปรุงฟังก์ชั่นดั้งเดิม แนวคิดการเขียนโปรแกรมที่เกี่ยวข้องกับด้านข้างยังรวมถึงโปรโตคอลเมตา-วัตถุอาสาสมัครมิกซ์อินและการมอบหมาย
หมายเหตุ: คำจำกัดความข้างต้นมาจาก Wikipedia จีน (หากคุณไม่สามารถเข้าถึงได้คุณสามารถเข้าถึงได้โดยการแก้ไขไฟล์โฮสต์ของระบบ 198.35.26.96 zh.wikipedia.org #chinese wikipedia ซึ่งสามารถช่วยได้หากคุณยังไม่สามารถเข้าถึงได้ บอกคุณโดยตรง การแปลของคำว่า AOP ค่อนข้างไม่สอดคล้องกับชื่อหลักในประเทศจีน การแปล AOP ในประเทศหลักคือ "การเขียนโปรแกรมที่มุ่งเน้นใบหน้า" อย่ายึดติดกับชื่อเพียงแค่รู้ว่ามันหมายถึงสิ่งเดียวกัน
ฉันเดาว่าคุณสับสนหลังจากอ่านคำจำกัดความนี้ หากคุณต้องการมีความเข้าใจที่ลึกซึ้งยิ่งขึ้นคุณสามารถไปที่ Zhihu เพื่อดูว่าคนตัวใหญ่โต้เถียงกันอย่างไรว่า AOP ในการเขียนโปรแกรมที่มุ่งเน้นคืออะไร? - ฉันควรยกตัวอย่างที่นี่
การเตรียมสภาพแวดล้อม AOP ของ Spring Boot
แนะนำโมดูลการพึ่งพาที่สอดคล้องกันใน pom.xml
<!-แพ็คเกจการพึ่งพาการบูตสปริง-> <carent> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <cersion> 1.5.1.Release </เวอร์ชัน> <ArtIfactId> Spring-Boot-Starter-Aop </ArtifactId> </dermentrency> <!-โมดูลการพึ่งพาเว็บ-> <การพึ่งพาอาศัย> <GroupId> org.springframework.boot </groupid>
ใช้การประมวลผลคำขอเว็บอย่างง่ายก่อน
คอนโทรลเลอร์ง่ายๆสำหรับการจัดการคำขอเว็บ
แพ็คเกจ com.craneyuan.controller; นำเข้า com.craneyuan.service.ihelloworldservice; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.web.bind.annotation. org.springframework.web.bind.annotation.requestmethod; นำเข้า org.springframework.web.bind.annotation.restcontroller; @restcontrollerpublic ชั้นเรียน helloworldcontroller @RequestMapping (value = "/hello", method = requestMethod.get) สตริงสาธารณะสวัสดี (ชื่อสตริง) {return helloWorldService.getHellomessage (ชื่อ); -ฉันจะไม่แสดงรหัสสำหรับคลาสการใช้งานบริการ HelloWorld อย่างง่าย
แพ็คเกจ com.craneyuan.service.impl; นำเข้า com.craneyuan.annotation.analysisactuator; นำเข้า com.craneyuan.service.ihelloworldservice; นำเข้า org.springframework.beans.factory.annotation.value; java.util.optional; @ServicePublic คลาส HelloWorldServiceImpl ใช้ iHellowOrldService {สตริงสาธารณะ gethellomessage (ชื่อสตริง) {return "hello" + potainal.ofnullable (ชื่อ) .orelse ("World!"); -บริการเว็บที่เรียบง่ายเช่นนี้พร้อมแล้ว คุณสามารถเริ่มโครงการและเรียกมันด้วยคำสั่ง Curl ตัวอย่างเช่น: Curl -xget -i "http://127.0.0.1:8080/hello?name=java" หากทุกอย่างเป็นไปด้วยดีคุณจะได้รับการตอบกลับดังต่อไปนี้:
http/1.1 200content-type: text/plain; charset = utf-8content ความยาว: 11date: thu, 11 ม.ค. 2018 09:45:38 Gmthello Java
ใช้คำอธิบายประกอบที่กำหนดเองเพื่อนับเวลาดำเนินการของวิธีการ
ก่อนกำหนดคำอธิบายประกอบที่ใช้เพื่อนับเวลาดำเนินการของวิธีการ
แพ็คเกจ com.craneyuan.annotation; นำเข้า java.lang.annotation.elementtype; นำเข้า java.lang.annotation.retention; นำเข้า java.lang.annotation.retentionpolicy; นำเข้า java.lang.lang.lang.lang.lang.lang. Analysisctuator {String note () default "";}จากนั้นกำหนดส่วนเพื่อจัดการคำอธิบายประกอบที่คุณเพิ่งกำหนด
แพ็คเกจ com.craneyuan.aspect; นำเข้า com.craneyuan.annotation.analysisactuator; นำเข้า org.aspectj.lang.joinpoint; นำเข้า org.aspectj.lang.annotation.aspect; นำเข้า org.aspectj.lang.annotation org.slf4j.loggerfactory; นำเข้า org.springframework.core.annotation.order; นำเข้า org.springframework.stereotype.Component;@Aspect@ComponentPublic Class การวิเคราะห์ Threadlocal <long> begintime = ใหม่ ThreadLocal <> (); @PointCut (" @คำอธิบายประกอบ (การวิเคราะห์)") โมฆะสาธารณะ servicestatistics (การวิเคราะห์การวิเคราะห์เชิงวิเคราะห์) {} @Before ("servicestatistics (การวิเคราะห์)") โมฆะสาธารณะ debopoint log.info ("Cy666 หมายเหตุ: {}", Analysisctuator.note ()); } @after ("Servicestatistics (การวิเคราะห์)") โมฆะสาธารณะ doafter (การวิเคราะห์การวิเคราะห์เชิงวิเคราะห์) {log.info ("Cy666 เวลาทางสถิติ: {}, หมายเหตุ: {}", system.currentTimeMillis () - Begintime.get () -ในที่สุดเพียงเพิ่มคำอธิบายประกอบ @AnalysisActuator ลงในวิธีการที่ต้องนับเวลาการดำเนินการ
แพ็คเกจ com.craneyuan.service.impl; นำเข้า com.craneyuan.annotation.analysisactuator; นำเข้า com.craneyuan.service.ihelloworldservice; นำเข้า org.springframework.beans.factory.annotation.value; java.util.optional; @ServicePublic คลาส HelloWorldServiceImpl ใช้ iHellowOrldService {@AnalysisActuator (note = "รับวิธีการแชท") สตริงสาธารณะ gethellomessage (ชื่อสตริง) {return "hello" -เริ่มโครงการและเรียกมันอย่างไม่เป็นทางการด้วยคำสั่ง Curl หากเป็นไปด้วยดีคุณสามารถสังเกตบันทึกที่พิมพ์บนใบหน้า
... CY666 เวลาสถิติ: 4, หมายเหตุ: วิธีการรับข้อมูลการแชท
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น