이전 기사 Java 주석의 도입은 Java 주석의 기본 사용법을 설명하고 사용자 정의 주석을 통해 간단한 테스트 도구를 구현합니다. 이 기사는 Spring Boot의 AOP를 사용하여 사용자 정의 주석 처리를 단순화하는 방법을 소개하고 간단한 메서드 실행 시간 통계 도구를 예제로 구현하여 이러한 내용을 설명합니다.
AOP 개념
측면 지향 프로그래밍 (AOP, 측면 지향 프로그래밍, 관점 지향 프로그래밍 및 섹션 지향 프로그래밍으로도 번역)는 프로그래밍 패러다임을 언급하는 컴퓨터 과학의 용어입니다. 이 패러다임은 객체, 클래스 또는 기능에 흩어져있는 크로스 컷팅 문제를 설명하기위한 새로운 모듈 식 메커니즘 인 측면이라는 언어 구성을 기반으로합니다.
측면의 개념은 객체 지향 프로그래밍의 개선에서 비롯되지만 이에 국한되지 않으며 전통적인 기능을 개선하는 데 사용될 수도 있습니다. 측면과 관련된 프로그래밍 개념에는 메타 객체 프로토콜, 피험자, 믹스 인 및 대표단도 포함됩니다.
참고 : 위의 정의는 중국 Wikipedia에서 나옵니다 (액세스 할 수없는 경우 시스템 호스트 파일을 수정하여 액세스 할 수 있습니다. 198.35.26.96 Zh.wikipedia.org #Chinese Wikipedia, 이에 대해서만 도움이 될 수 있습니다. 여전히 시스템에 액세스 할 수없는 경우 시스템의 호스트 위치를 수정하는 방법을 검색하십시오. 직접 알려주십시오. 파일 경로는 /etc /hosts입니다). AOP라는 단어의 번역은 중국의 주류 이름과 약간 일치하지 않습니다. AOP의 주류 국내 번역은 "얼굴 지향 프로그래밍"입니다. 이름을 고수하지 말고 그것이 같은 것을 언급한다는 것을 알고 있습니다.
이 정의를 읽은 후 혼란스러워하는 것 같아요. 더 깊은 이해를 원한다면 Zhihu로 가서 Big Guys가 지향적 프로그래밍의 AOP가 무엇인지에 대해 어떻게 논쟁하는지 확인할 수 있습니까? . 여기서 예를 들어 보겠습니다.
Spring Boot의 AOP 환경 준비
pom.xml에 해당 종속성 모듈을 소개하십시오
<!-스프링 부팅 종속성 패키지-> <부모> <groupid> org.springframework.springframework.springframewort.boot </groupId> <artifactid> Spring-Boot-Starter-Parent </artifactid> <bersion> 1.5.1.Release </version> </parent> </parents> <!-AOP 의존성 module- <groupd> orgframframwork.spramwork.spramwork.sprongramwork.sprong. <아티 팩트> 스프링 부트 스타터 -aop </artifactid> </exceentency> <!-웹 종속성 모듈-> <prectionency> <groupId> org.springframework.boot </groupID> <artifactID> Spring-Boot-starter-web </arevency> </fectemency>
간단한 웹 요청 처리를 먼저 구현하십시오
웹 요청을 처리하기위한 간단한 컨트롤러.
package com.craneyuan.controller; import com.craneyuan.service.ihelloworldservice; import org.springframework.bean.beans.annotation.autowired; import org.springframework.web.bind.bind.annotation.requestmapping; import org.springframework.web.bind.bind org.springframework.web.bind.annotation.restcontroller; @RestControllerPublic 클래스 HellowOrldController {@autowired private ihellowldservice helloorldservice; @requestmapping (value = "/hello", method = requestmethod.get) public String hello (문자열 이름) {return helloworldservice.gethellomessage (name); }}간단한 Helloworld 서비스 구현 클래스의 코드를 표시하지 않습니다.
package com.craneyuan.service.impl; import com.craneyuan.annotation.analysisActuator; import com.craneyuan.service.ihelloworldservice; import org.springframework.bean.annotation.value; import org.springframework.stereotype.service; import java.util.optional; @servicepublic class helloworldserviceimpl은 ihelloworldservice {public string gethellomessage (문자열 이름) {return "hello" + 옵션 .ofnullable (name) .orelse ( "World!"); }}이러한 간단한 웹 서비스가 준비되었습니다. 프로젝트를 시작하여 Curl 명령으로 호출 할 수 있습니다 (예 : Curl -XGet -I”http://127.0.1:8080/Hello?name=java”. 모든 것이 잘되면 다음과 같은 응답을 얻게됩니다.
http/1.1 200content-type : text/plain; charset = utf-8content 길이 : 11date : Thu, 2018 년 1 월 11 일 09:45:38 Gmthello Java
사용자 정의 주석을 사용하여 메소드의 실행 시간을 계산하십시오.
먼저 메소드의 실행 시간을 계산하는 데 사용되는 주석을 정의하십시오.
package com.craneyuan.annotation; import java.lang.annotation.elementtype; import java.lang.annotation.retention; import java.lang.annotation.retentionpolicy; import java.lang.annotation.target; @target (rementtece.method) @trateation. 문자열 참고 () 기본값 "";}
그런 다음 방금 정의한 주석을 처리 할 섹션을 정의하십시오.
package com.craneyuan.aspect; import com.craneyuan.annotation.analysisActuator; import org.aspectj.lang.joinpoint; import org.aspectj.lang.annotation.aspect; import org.aspectj.lang.annotation.be -rounde; import org.aspect.lang.angor ormort; org.slf4j.loggerfactory; import org.springframework.core.annotation.order; import org.springframework.stereotyp.component;@componentpublic class analysisActuatorAspect {Final Static Logger log = logger factory.getLogger (AnalysisActuatorAspect.class); ThreadLocal <long> begintime = new ThreadLocal <> (); @PointCut ( " @annotation (AnalyActuator)") public void servicestatistics (AnalysisActuator AnalysisActuator) {} @before ( "servicestatistics (ranicaleActuator)") public void dobefore (joinpoint joinpoint, AnalysisActuator AnalysisActuator) {// 요청 도착 시간 (System.Current TimemilILIL) log.info ( "cy666 참고 : {}", AnalysisActuator.note ()); } @After ( "servicestatistics (AnalysisActuator)") public void doafter (AnalysisActuator AnalysisActuator) {log.info ( "cy666 통계 시간 : {}, {}", System.CurrentTimeMillis () - begIntime.get (), AnalysisActuator (); }}마지막으로 @analysisActuator 주석을 실행 시간을 계산하는 데 필요한 메소드에 추가하십시오.
package com.craneyuan.service.impl; import com.craneyuan.annotation.analysisActuator; import com.craneyuan.service.ihelloworldservice; import org.springframework.bean.annotation.value; import org.springframework.stereotype.service; import java.util.optional; @servicepublic class helloworldserviceimpl은 ihelloworldservice {@analysisActuator (note = "채팅 정보 방법") public String gethellomessage (문자열 이름) {return "hello" + 옵션 (이름) .orelse ( "World!"); }}프로젝트를 시작하고 컬 명령으로 부담없이 호출하십시오. 잘 진행되면 얼굴에 인쇄 된 로그를 관찰 할 수 있습니다.
... CY666 통계 시간 : 4, 참고 : 채팅 정보를 얻는 방법
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.