Upload
carter-morse
View
48
Download
0
Embed Size (px)
DESCRIPTION
고급자바프로그래밍 (Advanced Java Programming). 강원대학교 컴퓨터학부 2012 년 가을학기 담당교수 정충교. 6 장 AOP 2. 6.5 스프링 AOP. 투명한 부가 기능 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드에 영향을 주지 않음. 자동 프록시 생성. 빈 후처리기 DefaultAdvisorAutoProxyCreator implements BeanPostProcessor. org.springframework.aop Interface Pointcut { - PowerPoint PPT Presentation
Citation preview
1/13
1
고급자바프로그래밍(ADVANCED JAVA PROGRAMMING)
강원대학교 컴퓨터학부2012 년 가을학기담당교수 정충교
2/13
2
6 장 AOP 2
3/13
3
• 투명한 부가 기능• 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드에
영향을 주지 않음
6.5 스프링 AOP
4/13
4
자동 프록시 생성• 빈 후처리기• DefaultAdvisorAutoProxyCreator implements BeanPostProcessor
org.springframework.aop Interface Pointcut {
ClassFilter getClassFilter() ;MethodMatcher getMethodMatcher();
}
5/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>
6/13
6
6.5.4 AOP 란 무엇인가 ?
• 트랜잭션 서비스 추상화• 프록시와 데코레이션 패턴• 다이내믹 프록시와 프록시 팩토리빈• 자동 프록시 생성 방법과 포인트컷• 부가기능의 모듈화• AOP: 에스펙트 지향 프로그래밍
7/13
7
독립 에스펙트를 이용한 부가기능의 분리와 모듈화
8/13
8
6.5.5 AOP 적용 기술• 프록시를 이용한 AOP
• 바이트코드 생성과 조작을 통한 AOP
9/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>
10/13
10
6.7 트랜잭션 속성• 트랜잭션 전파 (transaction propagation)
• PROPAGATION_REQUIRED• PROPAGATION_REQUIRES_NEW• PROPAGATION_NOT_SUPPORTED
• 격리수준 (isolation level)
• 제한시간 (timeout)
• 읽기전용 (readonly)
11/13
11
TransactionInterceptor 와 transaction attributes
• 메소드별로 다른 속성의 트랜잭션을 적용• TransactionInterceptor 어드바이스
• 리스트 6-71• 리스트 6-72
12/13
12
6.7 애노테이션 트랜잭션 속성과 포인트컷
• <tx:annotation-driven/>
13/13
13
끝