헤르메스 LIFE

[Spring] @Aspect 어노테이션을 이용한 AOP 본문

Spring Framework

[Spring] @Aspect 어노테이션을 이용한 AOP

헤르메스의날개 2010. 8. 13. 10:25
728x90

@Aspect 어노테이션
  - AspectJ 5 버젼에 새롭게 추가된 어노테이션
  - 설정파일에 Advice 및 Pointcut등의 설정을 하지 않고도 자동으로 Advice를 적용 가능.
  - <aop:aspectj-autoproxy />태크를 설정 파일에 추가하면 @Aspect 어노테이션이 적용된 빈을 Aspect로 사용 가능.

[Prefix]-service.xml 설정

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop 
         
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  <aop:aspectj-autoproxy /> <-- 반드시 써줘야 함.

.................
</bean>

AspectJ를 사용하기 위해서는 다음의 jar파일이 필요합니다.
asm
aspectjrt
aspectjweaver
cglib

※ 참고.
BCI(Byte Code Instumentation)이란 Java의 Byte Code에 직접 수정을 가해, 소스파일의 수정없이 원하는 기능을 부여하는 기법입니다.

이런한 특징은 Java 프로파일러나 모니터링 툴들이 사용하고 있으며, BCI를 통해 모니터링 대상이 되는 어플리케이션의 수정없이 성능 측정에 필요한 요소들을 삽입할 수 있습니다. AOP(Aspected Oriented Programming) 역시 BCI가 핵심기술입니다. AOP 컴포넌트들이 컴파일 시간이나 로딩시간, 또는 런타임 시간에 Aspect와 Business Logic을 Weaving 할 수 있는 이유가 BCI, 즉 Java 바이트 코드를 직접 수정 할 수 있는 기술을 사용하기 때문입니다.

BCI를 지원하는 라이브러리들은

ASM : Object Web에서 제공 (http://asm.objectweb.org)
BCEL : Apache 프로젝트에서 제공 (http://jakarta.apache.org/bcel)
SERP : Sourceforge 프로젝트에서 제공 (http://serp.sourceforge.net)
Javassist : JBoss 프로젝트에서 제공 (http://www.csg.is.titech.ac.jp/~chiba/javassist)

2010년 07월 현재 전자정부 프레임워크에 사용되는 자바 라이브러리는 Object Web의 ASM 2.0버젼을 사용 중입니다.
ASM은 현재 3.3 버젼까지 나와있는 상태입니다.

참고 : BCI에 대한 내용은 욱짜님의 블러그(http://blog.naver.com/ukja)를 참조하였습니다.
         현재는 http://ukja.tistory.com/ 이곳으로 이사하셨다는군요.. ^^*

728x90

'Spring Framework' 카테고리의 다른 글

[iBatis] iBatis의 쿼리로그 변경  (0) 2010.10.27
[iBatis] iBatis 2.3.4.726 Build  (0) 2010.10.26
[Spring] 다국어 처리  (0) 2010.10.13
[Log4j] Log4j 설치  (0) 2010.08.12
[Spring] Spring의 다운로드  (0) 2010.08.06