SpringBoot 에서 절 점 을 찾 는 두 가지 상용 방법
4762 단어 SpringBoot포 지 셔 닝접점
다음은 이 두 가지 방법의 사용 방식 을 간단 한 예 로 설명 한다.
<==========방법 집행 전=============>
method();
<==========방법 집행 후=============>
실행 식
execution 표현 식 의 방식 은 주로 절 점 을 정의 할 때 표현 식 을 통 해 강화 해 야 할 방법 을 선택 하 는 것 입 니 다.
실행 식 해석
execution(< >?< >< >(< >)< >?)
유형해독
반드시
예시
<수정자 모드>
선택 한 수정자 형식 표시
아니.
public/private/...
<형식 모드 로 돌아 가기>
선택 한 반환 값 형식 표시
예.
void/int/...
<방법 명 모드>
가방
예.
com.luke.service/com.luke.controller.*/...
(<매개 변수 모드>)
선택 한 방법의 매개 변 수 를 표시 합 니 다.
예.
*(..)/*(String name)/*(int size, ..)/...
<이상 모드>
선택 한 방법의 이상 유형 을 표시 합 니 다.
아니.
throws Exception/...
//
execution(* com.luke.service.*(..))
// public
execution(public * UserService.*(..))
// public , int
execution(public int com.luke.service.*(..))
// public , String, int
execution(public int com.luke.service.*(String name, ..))
사용자 정의 절단면 클래스:
@Aspect
@Component
public class LogAspect {
@Pointcut("execution(* com.luke.springdata.controller.*.*(..))")
public void operationLog(){}
/**
* Around
*/
@Around("operationLog()")
public Object doAround(ProceedingJoinPoint joinPoint) {
Object proceed = null;
try {
System.out.println(" ");
proceed = joinPoint.proceed();
System.out.println(" ");
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return proceed;
}
}
이 절 점 의 execution 표현 식 은 com.luke.springdata.controller 패키지 의 모든 방법 입 니 다.**@Around**주 해 를 사용 하여 증강 방법 을 표시 하고 절 점 을 지정 합 니 다.
테스트 용 컨트롤 러 클래스
@RestController
@RequestMapping("/person")
public class PersonController {
@GetMapping("/test")
public void test(){
System.out.println(" ");
}
}
항목 을 실행 하고 이 방법 을 호출 하여 결 과 를 봅 니 다.방법 실행 전
방법 이 집행 되 었 다
방법 실행 후
사용자 정의 주석 방법
사용자 정의 주 해 는 강화 가 필요 한 방법 에 사용자 정의 주 해 를 추가 하면 된다.
사용자 정의 주석 클래스:
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log{
}
주석 Log 를 사용자 정의 하 였 습 니 다.이 주 해 는 방법 에 만 추가 할 수 있 습 니 다.사용자 정의 절단면 클래스:
@Aspect
@Component
public class LogAspect {
@Pointcut("@annotation(com.luke.springdata.annotation.Log)")
public void operationLog(){}
/**
* Around
*/
@Around("operationLog()")
public Object doAround(ProceedingJoinPoint joinPoint) {
Object proceed = null;
try {
System.out.println(" ");
proceed = joinPoint.proceed();
System.out.println(" ");
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return proceed;
}
}
여기에 작 성 된 사용자 정의 절단면 클래스 는**@Pointcut 주해 로 절단면 을 정의 합 니 다.또한 이번 에는@annotation(xxx)**방식 으로 xxx 주 해 를 추가 한 방법 이 있 으 면 이 절단면 을 사용 하여 강화 하 는 것 을 보 여 줍 니 다.또한 모든 증강 방법 에 이 절단면 을 사용 한 다음 에 정상 적 인 방법 으로 논 리 를 강화 하면 됩 니 다.
테스트 용 컨트롤 러 클래스
@RestController
@RequestMapping("/person")
public class PersonController {
@Log
@GetMapping("/test")
public void test(){
System.out.println(" ");
}
}
이때 절단면 을 사용 해 야 하 는 방법 에**@Log**주 해 를 넣 고 이 방법 을 호출 하여 효 과 를 봅 니 다.방법 실행 전
방법 이 집행 되 었 다
방법 실행 후
총결산
두 가지 방식 모두 AOP 의 기능 을 실현 할 수 있 습 니 다.사용 에 있어 서 어떤 가방 아래 의 모든 방법 이 이 절단면 을 강화 해 야 한다 면 execution 표현 식 을 사용 하 는 것 이 더욱 편리 합 니 다.그러나 일부 방법 만 필요 하고 서로 다른 유형 에 분포 하면 주해 방식 이 더욱 유연 하 다.
SpringBoot 에서 포 지 셔 닝 접점 을 찾 는 데 자주 사용 되 는 두 가지 방법 에 관 한 글 을 소개 합 니 다.더 많은 SpringBoot 포 지 셔 닝 접점 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.