13
1/13 고고고고고고고고고 (ADVANCED JAVA PROGRAMMING) 고고고고고 고고고고고 2012 고 고고고고 고고고고 고고고 1

고급자바프로그래밍 (Advanced Java Programming)

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

Page 1: 고급자바프로그래밍 (Advanced Java Programming)

1/13

1

고급자바프로그래밍(ADVANCED JAVA PROGRAMMING)

강원대학교 컴퓨터학부2012 년 가을학기담당교수 정충교

Page 2: 고급자바프로그래밍 (Advanced Java Programming)

2/13

2

6 장 AOP 2

Page 3: 고급자바프로그래밍 (Advanced Java Programming)

3/13

3

• 투명한 부가 기능• 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드에

영향을 주지 않음

6.5 스프링 AOP

Page 4: 고급자바프로그래밍 (Advanced Java Programming)

4/13

4

자동 프록시 생성• 빈 후처리기• DefaultAdvisorAutoProxyCreator implements BeanPostProcessor

org.springframework.aop Interface Pointcut {

ClassFilter getClassFilter() ;MethodMatcher getMethodMatcher();

}

Page 5: 고급자바프로그래밍 (Advanced Java Programming)

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>

Page 6: 고급자바프로그래밍 (Advanced Java Programming)

6/13

6

6.5.4 AOP 란 무엇인가 ?

• 트랜잭션 서비스 추상화• 프록시와 데코레이션 패턴• 다이내믹 프록시와 프록시 팩토리빈• 자동 프록시 생성 방법과 포인트컷• 부가기능의 모듈화• AOP: 에스펙트 지향 프로그래밍

Page 7: 고급자바프로그래밍 (Advanced Java Programming)

7/13

7

독립 에스펙트를 이용한 부가기능의 분리와 모듈화

Page 8: 고급자바프로그래밍 (Advanced Java Programming)

8/13

8

6.5.5 AOP 적용 기술• 프록시를 이용한 AOP

• 바이트코드 생성과 조작을 통한 AOP

Page 9: 고급자바프로그래밍 (Advanced Java Programming)

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>

Page 10: 고급자바프로그래밍 (Advanced Java Programming)

10/13

10

6.7 트랜잭션 속성• 트랜잭션 전파 (transaction propagation)

• PROPAGATION_REQUIRED• PROPAGATION_REQUIRES_NEW• PROPAGATION_NOT_SUPPORTED

• 격리수준 (isolation level)

• 제한시간 (timeout)

• 읽기전용 (readonly)

Page 11: 고급자바프로그래밍 (Advanced Java Programming)

11/13

11

TransactionInterceptor 와 transaction attributes

• 메소드별로 다른 속성의 트랜잭션을 적용• TransactionInterceptor 어드바이스

• 리스트 6-71• 리스트 6-72

Page 12: 고급자바프로그래밍 (Advanced Java Programming)

12/13

12

6.7 애노테이션 트랜잭션 속성과 포인트컷

• <tx:annotation-driven/>

Page 13: 고급자바프로그래밍 (Advanced Java Programming)

13/13

13