AOP 개념

조인포인트(joinpoint) : 애플리케이션 중의 특별한 지점 메서드 호출, 메서드 실행자체, 클래스 초기화, 객체성생

어드바이스(advice) : 조인 포인트에 실행되는 코드

포인트컷(pointcuts) : 조인 포인트의 집합체 어드바이스 실행을 정의

애스팩트(aspect) : 어드바이스와 포인트의 조합

위빙(weaving) : 애스펙트를 주입하는 과정

타켓(target) : 자신의 실행 흐름이 어떠한 aop처리로 인해 수정되는 객체

인트로덕션(introduction) : 객체구조를 수정하여 새로운 메서드나 그 필드를 추가할 수 있는 처리

AOP를 이용한 "Hello, World"

MessageWriter 클래스

package com.lastjava.spring.ch05.simple;

public class MessageWriter {
 public void writeMessage(){
  System.out.print("World");
 }
}

MessageDecorator 클래스

package com.lastjava.spring.ch05.simple;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class MessageDecorator implements MethodInterceptor{
 public Object invoke(MethodInvocation invocation) throws Throwable {
  System.out.print("Hello ");
  Object retVal = invocation.proceed();
  System.out.println("!");
  return retVal;
 }
}

MessageDecorator 클래스

package com.lastjava.spring.ch05.simple;

import org.springframework.aop.framework.ProxyFactory;

public class HelloWorldWeaver {
 public static void main(String[] args){
  
  MessageWriter target = new MessageWriter();
  
  ProxyFactory pf = new ProxyFactory();
  
  pf.addAdvice(new MessageDecorator());
  pf.setTarget(target);
  
  MessageWriter proxy = (MessageWriter) pf.getProxy();
  
  target.writeMessage();
  System.out.println("");
  proxy.writeMessage();
 }
}

결과물

World
Hello World!

+ Recent posts