130 likes | 366 Views
고급자바프로그래밍 (Advanced Java Programming). 강원대학교 컴퓨터학부 2012 년 가을학기 담당교수 정충교. 6 장 AOP 2. 6.5 스프링 AOP. 투명한 부가 기능 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드에 영향을 주지 않음. 자동 프록시 생성. 빈 후처리기 DefaultAdvisorAutoProxyCreator implements BeanPostProcessor. org.springframework.aop Interface Pointcut {
E N D
고급자바프로그래밍(Advanced Java Programming) 강원대학교컴퓨터학부 2012년 가을학기 담당교수정충교
6.5 스프링 AOP • 투명한 부가 기능 • 부가 기능을 적용한 후에도 기존 기본 기능의 설계와 코드에 영향을 주지 않음
자동 프록시 생성 • 빈 후처리기 • DefaultAdvisorAutoProxyCreator implements BeanPostProcessor org.springframework.aop Interface Pointcut { ClassFiltergetClassFilter() ; MethodMatchergetMethodMatcher(); }
6.5.3 포인트컷표현식을 이용한 포인트컷 AspectJExpressionPointcut AspectJExpressionPointcutpointcut = 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.5.4 AOP란 무엇인가? • 트랜잭션 서비스 추상화 • 프록시와데코레이션 패턴 • 다이내믹 프록시와프록시팩토리빈 • 자동 프록시 생성 방법과 포인트컷 • 부가기능의 모듈화 • AOP: 에스펙트 지향 프로그래밍
6.5.5 AOP 적용 기술 • 프록시를 이용한 AOP • 바이트코드 생성과 조작을 통한 AOP
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>
6.7 트랜잭션 속성 • 트랜잭션 전파 (transaction propagation) • PROPAGATION_REQUIRED • PROPAGATION_REQUIRES_NEW • PROPAGATION_NOT_SUPPORTED • 격리수준 (isolation level) • 제한시간 (timeout) • 읽기전용(readonly)
TransactionInterceptor와 transaction attributes • 메소드별로 다른 속성의 트랜잭션을 적용 • TransactionInterceptor어드바이스 • 리스트 6-71 • 리스트 6-72
6.7 애노테이션 트랜잭션 속성과 포인트컷 • <tx:annotation-driven/>