SpringBoot 개발 수기 -- AOP 사용
Aop 원리
op 는 모두 Aspect Oriented Programming 이 라 고 하 는데 절단면 을 대상 으로 AOP 는 주로 업무 처리 과정 에서 의 절단면 을 추출 하 는 것 이 목적 이다. 이 는 처리 과정 에서 의 특정한 절차 나 단계 에 직면 하여 논리 과정 에서 각 부분 간 의 낮은 결합 성의 격 리 효 과 를 얻 는 것 이다.디자인 모델 이 완성 한 임무 와 차이 가 많 지 않 고 다른 측면 에서 프로그램의 구 조 를 생각 하여 대상 을 대상 으로 하 는 프로 그래 밍 의 부족 을 보완 하 는 것 이다.
AOP 기술 은 '가로 자 르 기' 라 는 기술 을 이용 하여 봉 인 된 대상 내 부 를 해부 하고 여러 가지 유형의 공공 행 위 를 재 활용 가능 한 모듈 로 봉 하면 시스템 의 중복 코드 를 줄 이 고 모듈 간 의 결합 도 를 낮 추 며 미래의 조작 성과 유지 가능성 에 유리 하 다.AOP 는 소프트웨어 시스템 을 두 부분 으로 나 누 었 다. 핵심 관심 사 와 횡단 관심 사 이다.업무 처리 의 주요 절 차 는 핵심 관심 사 이 고 그 와 의 관계 가 크 지 않 은 부분 은 횡단 관심 사다.횡단 관심 점 의 특징 중 하 나 는 그들 이 핵심 관심 점 의 여러 곳 에서 자주 발생 하 는데 곳곳 이 기본적으로 비슷 하 다 는 것 이다.예 를 들 어 권한 인증, 로그, 사무 처리 등 입 니 다.
2. AOP 상용 용어
3. AOP 표현 식 문법
속뜻
execution()
표현 식 의 주체
첫 번 째 "*" 기호
반환 값 을 나타 내 는 형식 임 의
com.package
AOP 가 자 른 서비스의 가방 이름, 즉 가로로 자 르 는 업무 류 가 필요 합 니 다.
가방 이름 뒤에 '...'
가방
두 번 째 "*"
모든 클래스
.*(..)
모든 방법 명 을 표시 하고 괄호 는 파 라 메 터 를 표시 하 며 두 점 은 모든 매개 변수 유형 을 표시 합 니 다.
차원 별 설명
service 패키지 와 하위 패키지 의 모든 방법 에 일치 합 니 다:
4. AOP 알림 유형
1. Before: 대상 방법 이 호출 되 기 전에 강화 처 리 를 합 니 다. @ Before 는 접점 표현 식 만 지정 하면 됩 니 다.
2. AfterReturning: 목표 방법 이 정상적으로 완 성 된 후에 강화 합 니 다. @ AfterReturning 은 접점 표현 식 을 지정 한 후에 반환 값 형 참 명 returning 을 지정 하여 목표 방법 을 나타 내 는 반환 값 을 지정 할 수 있 습 니 다.
3. AfterThrowing: 프로그램 에서 처리 되 지 않 은 이상 을 처리 하 는 데 사 용 됩 니 다. @ AfterThrowing 은 삽입점 표현 식 을 지정 한 후 throwing 의 반환 값 형 참 명 을 지정 할 수 있 습 니 다. 이 형 참 명 을 통 해 대상 방법 에서 던 진 이상 대상 에 접근 할 수 있 습 니 다.
4. After: 목표 방법 이 완 성 된 후에 강화 합 니 다. 목표 방법 에 관 계 없 이 성공 적 으로 완성 합 니 다. @After 는 절 입 점 표현 식 을 지정 할 수 있 습 니 다.
5. Around: 서 라운드 알림 은 목표 방법 이 완 료 된 후에 강화 처 리 를 합 니 다. 서 라운드 알림 은 가장 중요 한 알림 유형 입 니 다. 예 를 들 어 사무, 로그 등 은 모두 서 라운드 알림 입 니 다. 프로 그래 밍 의 핵심 은 Proceeding JoinPoint 입 니 다.
코드 시범
@Component
@Aspect
public class AOPTest {
/**
*
*/
@Pointcut("execution(* cn.hhu..bbs..*.*(..))")
public void pointcut1(){}
@Before("pointcut1()")
public void before(JoinPoint joinPoint){
System.out.println("before");
}
@After("pointcut1()")
public void after(JoinPoint joinPoint){
System.out.println("after");
}
@AfterReturning(pointcut = "pointcut1()",returning = "returnVal")
public void afterReturning(JoinPoint joinPoint,Object returnVal){
System.out.println("afterReturning:result+"+returnVal);
}
@Around("pointcut1()")
public void around(ProceedingJoinPoint proceedingJoinPoint){
System.out.println("around ");
try {
proceedingJoinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
System.out.println("around ");
}
}
around
before
around
after
afterReturning:result+null
여기 AfterReturing 의 반환 값 이 null 인 것 은 서 라운드 알림 이 존재 하기 때문에 서 라운드 알림 없 이 반환 값 을 찾 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.