Spring --- AOP III
이 글 은 먼저 두 개의 AOP 의 개념 을 보충 합 니 다.
1) 도입 (소개)
도입 이란 무엇 인가?도입 은 목표 대상 의 소스 코드 를 수정 하지 않 은 상태 에서 목표 대상 에 게 방법 과 속성 을 추가 하 는 기술 수단 이다.
예 를 들 어 당신 은 다음 과 같은 목표 대상 이 있 습 니 다.
public class DoThingBean {
public void DoOneThing(){
System.out.println("Do one thing!");
}
}
우 리 는 이제 DoOneThing 을 수정 하지 않 는 토대 에서 doOtherThing () 이라는 방법 을 추가 해 야 한다.그렇다면 우 리 는 어떻게 doOtherThing () 을 도입 해 야 할 까?
우선 새로 추가 할 방법 을 새로운 인터페이스 에 설명 합 니 다.
public interface IOtherBean {
public void doOtherThing();
}
그리고 도입 클래스 를 작성 하여 차단기 Introduction Interception 과 새로운 방법 인 터 페 이 스 를 실현 합 니 다.
public class SomeBeanIntroductionInterceptor implements IOtherBean, IntroductionInterceptor {
public void doOtherThing() {
System.out.println("do other thing!");
}
public Object invoke(MethodInvocation invocation) throws Throwable {
//
if ( implementsInterface(invocation.getMethod().getDeclaringClass()) ) {
return invocation.getMethod().invoke(this, invocation.getArguments());
}
return invocation.proceed();
}
/**
* clazz IOtherBean
*/
public boolean implementsInterface(Class clazz) {
return clazz.isAssignableFrom(IOtherBean.class);
}
}
마지막 으로 도입 클래스 설정
introductionAdvisor
이렇게 사용자 가 방법 을 호출 할 때 차단기 Introduction Interception 은 방법 을 차단 하여 호출 방법 이 새로운 방법 인터페이스 에 있 는 방법 인지 판단 합 니 다.true 라면 이 방법 을 사용 하 게 하 는 것 이 실현 이 며, 그렇지 않 으 면 원래 의 방법 을 계속 사용 하 게 합 니 다.
주: 1. 차단기 구현 과 새로운 방법 인터페이스 이름 을 Default IntroductionAdvisor 에 주입 합 니 다.
2. 구조 기로 만 주입 할 수 있다.
3. Spring 의 도입 은 성능 에 결함 이 있 기 때문에 되도록 적 게 사용 해 야 합 니 다.
2) 짜 기 (Weaving)
절단면 (aspect) 을 다른 프로그램 형식 이나 대상 에 연결 하고 알림 (advisod) 대상 을 만 드 는 과정 을 짜 는 것 이 라 고 합 니 다.컴 파일 할 때, 클래스 를 불 러 올 때, 실행 할 때 완료 할 수 있 습 니 다 (AspectJ 컴 파일 러 사용).스프링 은 다른 순수한 자바 AOP 프레임 워 크 와 마찬가지 로 실행 중 직 입 이 완료 되 었 습 니 다.
대 백화, 짜 는 것 은 AOP 가 실현 하 는 과정, 즉 메모리 에서 동적 으로 생 성 되 는 시간 이다.동적 에이전트 든 CGLIB 든 이 과정 은 필수 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
프로그래밍 패러다임 -관점 지향(AOP)객체지향 설계 방식을 충분히 따르더라도, 여러 클래스에 공통된 기능이 흩어져서 존재할 수 있는데, 이렇게 흩어진 공통 기능들을 관심사 라고 한다. AOP에서 사용하는 여러 용어의 의미는 다음과 같다. 여러 곳에서 사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.