강의 9 - 강원대학교

Download Report

Transcript 강의 9 - 강원대학교

1
고급자바프로그래밍
(ADVANCED JAVA PROGRAMMING)
강원대학교 컴퓨터학부
2012년 가을학기
담당교수 정충교
1/13
2
6장 AOP 2
2/13
3
6.5 스프링 AOP
• 투명한 부가 기능
• 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드
에 영향을 주지 않음
3/13
4
자동 프록시 생성
• 빈 후처리기
• DefaultAdvisorAutoProxyCreator implements BeanPostProcessor
org.springframework.aop
Interface Pointcut {
ClassFilter getClassFilter() ;
MethodMatcher getMethodMatcher();
}
4/13
5
6.5.3 포인트컷 표현식을 이용한 포인트컷
AspectJExpressionPointcut
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution(* minus(int,int))");
pointcut.setExpression("execution(* springbook.test.Target.minus(int,int))");
<bean id="transactionPointcut"
class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression" value="execution(* *..*ServiceImpl.upgrade*(..))" />
</bean>
5/13
6
6.5.4 AOP란 무엇인가?
• 트랜잭션 서비스 추상화
• 프록시와 데코레이션 패턴
• 다이내믹 프록시와 프록시 팩토리빈
• 자동 프록시 생성 방법과 포인트컷
• 부가기능의 모듈화
• AOP: 에스펙트 지향 프로그래밍
6/13
7
독립 에스펙트를 이용한 부가기능의 분리와 모듈화
7/13
8
6.5.5 AOP 적용 기술
• 프록시를 이용한 AOP
• 바이트코드 생성과 조작을 통한 AOP
8/13
9
6.5.7 AOP의 네임스페이스
아래 설정 파일을 단순화 – 리스트 6-66, 6-67
<bean id="transactionAdvice" class="springbook.user.service.TransactionAdvice">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionPointcut"
class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression" value="execution(* *..*ServiceImpl.upgrade*(..))" />
</bean>
<bean id="transactionAdvisor"
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="transactionAdvice" />
<property name="pointcut" ref="transactionPointcut" />
</bean>
9/13
10
6.7 트랜잭션 속성
• 트랜잭션 전파 (transaction propagation)
• PROPAGATION_REQUIRED
• PROPAGATION_REQUIRES_NEW
• PROPAGATION_NOT_SUPPORTED
• 격리수준 (isolation level)
• 제한시간 (timeout)
• 읽기전용 (readonly)
10/13
11
TransactionInterceptor와 transaction attributes
• 메소드별로 다른 속성의 트랜잭션을 적용
• TransactionInterceptor 어드바이스
• 리스트 6-71
• 리스트 6-72
11/13
12
6.7 애노테이션 트랜잭션 속성과 포인트컷
• <tx:annotation-driven/>
12/13
13
끝
13/13