스프링 AOP의 관련 용어의 설명과 사용이 간편

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/TreeShu321/article/details/102532208

Aspect 지향적 인 프로그래밍이란 무엇인가

소프트웨어 업계에서 AOP는 의미 Aspect 지향적 인 프로그래밍의 약어입니다 : :로 바이두 백과 사전은 정의 Aspect 지향적 인 프로그래밍, 동적 에이전트 프로그램은 사전 컴파일 및 실행의 방법으로 유지 단결을 달성하기 위해 기술을 갖추고 있습니다. AOP는 OOP의 연속이다 소프트웨어 개발에 핫 스폿이 중요한 요소는 스프링 프레임 워크입니다, 기능적인 프로그래밍 Yansheng 팬 유형입니다. AOP 개발의 효율성을 개선하면서 비즈니스 로직, 부품 간의 결합의 정도를 감소 프로그램의 재사용 성을 향상시킬 수 있도록 비즈니스 로직의 각 부분을 분리 할 수 ​​있습니다.

AOP 관련 용어

알림 (조언)

용어 AOP에있어서, 조작부가 통지로 지칭된다. 알림 섹션 때 사용하는 경우, 해당 통지가 주소를 정의합니다.
봄 섹션 통지의 다섯 가지 유형이 있습니다

  • 사전 통지 (전) : 대상 메소드가 호출되기 전에 통지 함수를 호출;
  • (후)의 조언을 반환 한 후 : 완료 통지를 대상 메서드 호출 후, 다음 입력하는 방법에 대해 우려 것이 아니다;
  • (후 - 반환) 통지를 반환 : 전화 통지를 대상 방법의 성공적인 실행 후
  • 예외 통보 (후 던지기) 대상에있어서 예외가 발생 될 때 통지를 호출
  • 조언 약 (약) : 알림이 방법은 통화 알림되기 전에 통지를하는 방법을 포함하고 사용자 정의 동작을 수행하기 위해 호출 한 후

연결 지점 (지점 참여)

특정 위치의 프로그램의 실행은 : 클래스 초기화 시작할 때, 초기화 클래스 후, 메소드 호출 전에 클래스는 호출 한 후, 상기 방법은 예외를 발생 후에. 클래스 또는 프로그램 코드의 특정 부분이 포인트라는 특히 특성을 갖는 경계 지점이있다 "첨부 파일의 지점을." 봄에있어서의 부착의 점, 즉, 단지 그 방법 호출 직전 메소드 호출은, 상기 프로그램 실행 방법은, 전 및 보강 및 메소드 호출 예외 직조 후 이러한 점을 발생을 지원한다. 접속점은 두 메시지에 의해 결정되는 제 1 프로그램 실행 지점이 공정에 의해 표현되는 두 번째 점의 상대 배향에 의해 표현된다.

접선 지점 (포인트 컷)

각 프로그램 타입 접속점의 복수, 클래스는 두 가지 방법을 갖는다 같은, 이러한 방법은 두 개의 연결 지점, 즉 부착 점 대물 존재 객체 클래스되어있다. AOP "탄젠트 포인트"에 의해 특정 접속점 타겟팅. 부착 지점은 데이터베이스 쿼리 조건에 대응 접하는 지점의 기록에 해당된다. 관계는 하나 개의 접선 지점과 연결 지점은 컷 포인트 접속점 복수 일치 할 수 없다. 봄, 인터페이스 설명 org.springframework.aop.Pointcut 탄젠트 포인트는, 그것이 상기 AOP 스프링 룰 엔진 탄젠트 포인트 쿼리들을 분석을 담당하는 쿼리 기반 방법과의 부착 점으로서 사용하고, 대응하는 커넥터를 찾을 점. 특정 대상 싶다면, 연결 지점이 방법을 실행하기 전에이기 때문에 사실, 정확하게, 특정 프로그램 실행 포인트의 위치 정보를 포함, 같은 실행 이후로, 쿼리 연결 지점을 호출 할 수 없습니다, 만 점의 위치 결정 방법에 절단 연결 지점은 또한 위치 정보를 제공해야합니다.

제직 (제직)

이는 부착 된 특정 목표 지점에 기초하여 직조 공정을 향상시키기 위해 첨가된다. AOP는 직기 대상 클래스, 또는 원활 AOP 의해 함께이 직기 짠 향상된 소개한다. : 구현 기술에 따라, AOP는 세 가지 방법으로 직조
A, 특별 자바 컴파일러를 필요로 직물을 컴파일합니다.
B, 특별한 클래스 로더의 사용을 필요로 클래스 로딩의 직물.
C 동적 프록시 직조 런타임시 서브 클래스의 대상 클래스 등의 보강 방법을 추가.
봄 동적 프록시 직물의 직조 AspectJ를 컴파일 및 직물의 클래스 로딩 사용하는 동안.

제 (화면)

그리고 알림 섹션 접선의 결합 지점입니다

통합 AOP의 간단한 예를 springboot

코드 GitHub의에

package com.sl.aop;

import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;

/**
 * @author shuliangzhao
 * @Title: AopLog
 * @ProjectName spring-boot-learn
 * @Description: TODO
 * @date 2019/10/13 15:18
 */
@Aspect
@Component
@EnableAspectJAutoProxy
public class AopLog {

    @Pointcut("execution(* com.sl..*.*(..))")
    public void pointcut() {

    }
    
    @Before("pointcut()")
    public void before() {
        System.out.println("方法执行前...");
    }

    @After("pointcut()")
    public void after() {
        System.out.println("方法执行后...");
    }

    @Around("pointcut()")
    public void around() {
        System.out.println("环绕执行方法...");
    }

    @AfterThrowing("pointcut()")
    public void ffterThrowing() {
        System.out.println("方法执行失败...");
    }
}

용어 :
예 : 실행 (com.sl.service * ... * (...)).

전체 표현식은 다섯 개 부분으로 나눌 수 있습니다 :

1 실행 () : 식 체.

도 2는, 제 별표 * 모든 종류의 수를 나타내며, 상기 리턴 타입을 나타낸다.

도 3은, 패키지 이름 : 후자의 두 기간은 현재 서브 패킷 및 모든 패킷의 현재 패킷 com.sample.service 패키지, 패키지에서 클래스 방법의 모든 자손을 나타내는 패키지 이름을 인터셉트 할 필요를 나타낸다.

4 번째 별표 : 별표 (*)는 모든 클래스를 나타내는 클래스의 이름을 나타냅니다.

5 * (...)이 마지막 별표 방법 이름, 별표 다시 괄호 안의 모든 방법을 나타내는 방법을 나타내는 파라미터를 나타내는, 두 기간은 파라미터를 나타낸다

추천

출처blog.csdn.net/TreeShu321/article/details/102532208