2010. 8. 19. 00:48ㆍplming/Java - Spring
1. Target
Logging, Exception등을 제외한 단지 비즈니스 로직만을 포함하고 있어야 한다.
※ AOP를 적용한다고 해서 일정한 패턴이 없는 모든 Logging을 제거할 수는 없다. 해당 메써드내에서만 추가되는 Logging 메시지 같은 경우에는 과거와 같은 방식으로 구현할 수 밖에 없다.
애플리케이션을 개발할 때 애플리케이션 개발을 위하여 세운 정책(이것이 Aspect이다.)은 일정한 패턴이 있기 때문에 이를 Advice로 구현하는 것이 가능하지만 일정한 패턴없이 구현되는 부분에 대해서는 과거와 같은 방식으로 개발할 수 없다는 것을 의미한다.
2. Advice
Target 클래스에 추가적인 기능을 지원하기 위한 목적으로 사용되는 것.
- Logging 처리를 담당할 Advice = Spring의 Around Advice에 해당
import org.aopalliance.intercept.MethodInterceptor; public class UserLoggingAdvice implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { if (logger.isDebugEnabled()) { //Target 클래스의 메써드를 실행한다. if (logger.isDebugEnabled()) { return retVal; |
- Unchecked Exception 처리를 담당할 Advice
import org.springframework.aop.ThrowsAdvice; public class EmailNotificationThrowsAdvice implements ThrowsAdvice { public void afterThrowing(RuntimeException ex) throws Throwable { |
- Spring Framework에서 지원하는 5가지 Advice
Before Advice : MethodBeforeAdvice |
Target 클래스의 메소드가 실행되기 전에 기능을 추가하고 싶을 때 사용 |
After Returning Advice : AfterReturningAdvice.afterReturning() |
Target 클래스의 메소드 실행이 완료된 다음 후처리 작업이 필요할 경우에 사용 |
Around Advice | Target 클래스의 메소드, 인자에 대한 정보뿐만 아니라 Target 클래스의 메소드에 대한 직접적인 제어가 가능 |
Throws Advice | Target 클래스의 메소드 내에서 Exception이 발생했을 때 적용 afterThrowing( DataAccessException e )와 같이 메소드를 추가하여 사용 |
Introduction Advice | Target 클래스에 완전히 새로운 기능을 추가하는 것이 가능 |
3. Pointcut 과 Advisor
Pointcut은 Target 클래스와 Advice가 결합(Weaving)될 때 둘 사이의 결합 규칙을 정의하는 것.
public class UserLoggingPointcut extends StaticMethodMatcherPointcut { public boolean matches(Method method, Class cls) { public ClassFilter getClassFilter() { |
public class LoggingUserServiceTest extends TestCase { public void testLoginWithPointcut() throws Exception { ProxyFactory pf = new ProxyFactory(); Pointcut loggingPC = new UserLoggingPointcut(); pf.setTarget(target); UserService userService = (UserService) pf.getProxy(); |
Advisor 클래스는 AOP의 Aspect와 같은 개념으로 Advice와 Pointcut이 결합된 것
Advisor를 생성하기 위해서는 Advice와 Pointcut이 필요
- Spring 프레임워크에서 지원하는 일곱가지 Pointcut
1. StaticMethodMatcherPointcut 4. NameMatchMethodPointcut 5. ComposablePointcut 6. ControlFlowPointcut |
[출처] http://www.javajigi.net/pages/viewpage.action?pageId=7208963
[출처] Spring 프레임워크 워크북
'plming > Java - Spring' 카테고리의 다른 글
Spring Transaction (0) | 2010.08.22 |
---|---|
Spring - 빈 설정 파일 관리 (0) | 2010.08.22 |
Spring AOP (Aspect Oriented Programming) (0) | 2010.08.19 |
Spring - 테스트 전략 (0) | 2010.08.17 |
ANT 사용 시 한글 Properties 파일처리 (0) | 2010.08.17 |