Spring --- AOP III

3337 단어 aopspring
더 읽 기
이 글 은 먼저 두 개의 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 든 이 과정 은 필수 다.

좋은 웹페이지 즐겨찾기