Spring 프레임워크를 사용함에 있어서 가장 좋은 기능중 하나가 선언적인 트랜잭션 관리를 통해 코드에 트랜잭션 관리를 위한 코드를 하나도 넣지 않아도 된다는 것입니다.
3.0에서는 Spring AOP와 @Transactional 애노테이션을 제공하여 그 기능을 사용할 수 있는데요.
Spring AOP를 사용함에 있어서 발행하는 많은 문제를 해결하기 위해서는 SpringSource Tools Suite(정확히는 Spring IDE의) 의 AOP Extension을 사용해서 시각적으로 확인하는 것이 가장 좋습니다.
@ Spring IDE AOP Extension eclipse plugin
메뉴얼을 볼때 기본 설정은 대략 아래와 같습니다.
조금 다른건 저는 Spring Bean을 인터페이스가 아닌 클래스로 사용하기 때문에 proxy-target-class속성값이 true인 점 정도죠.
그리고 expose-proxy 값을 true로 주었습니다. AOP가 적용되어야 할 메서드 두개중 한군데가 계속 적용이 되길래 테스트 코드를 돌렸더니 JUnit 에러에서 친절하게 저 옵션을 켜달라고 해서 추가했습니다.
AOP가 적용되어야 할 메서드 중 일부만 적용될 경우 테스트 코드를 돌려보시거나 저 설정을 고려해보시면 될듯 합니다.
Spring AOP Extension을 사용하면 아래처럼 설정파일에 아이콘을 pointcut이 작동함으로 시각적으로 보여줍니다.
@ Spring AOP설정
그리고 그 대상 소스에도 함께 표기가 되죠. 즉 이 두 아이콘이 표기되면 설정상에 문제가 없다는 뜻입니다.
@ 대상 코드
근데, 이렇게 하더라도 안되는 경우가 있습니다.
특히 Spring @MVC 를 사용할때인데요. 이 경우 설정파일에서 @Controller 를 컨포넌트 스캔할때 옵션을 확인해보시면 됩니다.
use-default-filters를 false로 설정하시거나, @Service, @Repository를 모두 exclude로 제외하시면 됩니다.
3.0에서는 Spring AOP와 @Transactional 애노테이션을 제공하여 그 기능을 사용할 수 있는데요.
Spring AOP를 사용함에 있어서 발행하는 많은 문제를 해결하기 위해서는 SpringSource Tools Suite(정확히는 Spring IDE의) 의 AOP Extension을 사용해서 시각적으로 확인하는 것이 가장 좋습니다.
@ Spring IDE AOP Extension eclipse plugin
메뉴얼을 볼때 기본 설정은 대략 아래와 같습니다.
조금 다른건 저는 Spring Bean을 인터페이스가 아닌 클래스로 사용하기 때문에 proxy-target-class속성값이 true인 점 정도죠.
그리고 expose-proxy 값을 true로 주었습니다. AOP가 적용되어야 할 메서드 두개중 한군데가 계속 적용이 되길래 테스트 코드를 돌렸더니 JUnit 에러에서 친절하게 저 옵션을 켜달라고 해서 추가했습니다.
AOP가 적용되어야 할 메서드 중 일부만 적용될 경우 테스트 코드를 돌려보시거나 저 설정을 고려해보시면 될듯 합니다.
Spring AOP Extension을 사용하면 아래처럼 설정파일에 아이콘을 pointcut이 작동함으로 시각적으로 보여줍니다.
@ Spring AOP설정
그리고 그 대상 소스에도 함께 표기가 되죠. 즉 이 두 아이콘이 표기되면 설정상에 문제가 없다는 뜻입니다.
@ 대상 코드
근데, 이렇게 하더라도 안되는 경우가 있습니다.
특히 Spring @MVC 를 사용할때인데요. 이 경우 설정파일에서 @Controller 를 컨포넌트 스캔할때 옵션을 확인해보시면 됩니다.
use-default-filters를 false로 설정하시거나, @Service, @Repository를 모두 exclude로 제외하시면 됩니다.
<context:component-scan base-package="com.naver.newsstand.service" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
'자바' 카테고리의 다른 글
[maven] javadoc 생성 (0) | 2011.02.15 |
---|---|
[Spring] mvc:annotation-driven과 AnnotationMethodHandlerAdapter의 CustomArgumentResolvers (0) | 2011.02.07 |
[성능] 모델셋팅 및 리플렉션 처리.. (0) | 2011.01.07 |
[성능][업데이트] 로깅 API 성능 테스트(log4j, slf4j 등) (7) | 2010.12.30 |
[안드로이드][프로요][미라크] 캘린더 설정 (0) | 2010.11.22 |