Whiteship's Note

휴.. Spring AOP와 AspectJ 연동 성공



이전 글의 예상이 맞았습니다.

AspectJ 파일(aj 확장자)을 ajc라는 것으로 컴파일을 해야 하는데 이 녀석을 Eclipse에서는 어떻게 컴파일 할 지 모르기 때문에 컴파일을 못해서 class 파일이 없으니까 결국 Spring 컨테이너는 class 파일이 없어서 AspectJ로 작성한 Aspect를 못 읽어 들이고 에러를 내고 만 것이였습니다.

해결책은 ajc 사용해서 컴파일 해도 되겠지만.. 커맨드 라인에서 무언가를 하는것이 상당히 귀찮은 저 같은 분들은 AJDT 플러그인을 설치하시면 됩니다.

AJDT 홈페이지에 가시면 Eclipse 버전에 따라 release 정보가 표시되어 있습니다.

저는 Eclipse 3.3을 사용하기 때문에 다음의 URL로 업데이트 사이트를 등록하고 플러그인을 설치했습니다.
http://download.eclipse.org/tools/ajdt/33/update

설치한 뒤 해당 프로젝트에 "Convert to AspectJ Project"를 실행해주면 aj 파일은 ajc 사용해서 자동으로 컴파일 해주고, aspecjrt.jar 파일을 클래스패스에 추가해 줍니다.

사용자 삽입 이미지

그럼 Advice가 적용되는 지점에 해당 Advice가 몇 개 적용되는지 보여 줍니다.
사용자 삽입 이미지

멋진 툴입니다.

Class를 못찾던 문제도 해결 됐고 Spring AOP와 AspectJ를 연동도 간단하게 해결되었습니다.
top

  1. Favicon of http://secondMemory.kr BlogIcon 봉기환 2009.06.02 21:55 PERM. MOD/DEL REPLY

    헤에. 툴을 잘 쓰는 것도 중요한 문제인 듯 싶네요!

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2009.06.07 09:12 PERM MOD/DEL

    넹ㅋㅋ잘쓰면 편하죠.

  2. Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 2010.05.12 22:02 PERM. MOD/DEL REPLY

    안녕하세요. 글 정말 잘보고 있습니다. 주신 예제로 Classic, Annotation, Namespace 기반의 모든 테스트는 문제없이 완료했는데... AspectJ를 직접 쓴 방법은 어찌해야하는지 모르다가 AJDT를 이용해 에러는 없앴습니다. 근데 아쉽게도...
    여전히

    Cannot find class [aspectj.Manner] for bean with name 'mannerAspect' defined in class path resource [aspectj/aspectjContext.xml]

    이런 에러가 나네요 흑흑... Aspect Visualiser로 보면 별 문제가 없던데.. 왜 그런지 모르겠더군요.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.05.13 13:04 신고 PERM MOD/DEL

    댓글을 이제서야 봤네요. ajc 컴파일이 잘 안됐었나 보군요.

  3. Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 2010.05.13 12:02 PERM. MOD/DEL REPLY

    ㅎㅎㅎ 알고봤더니... aspectj에서도 package를 넣어야 하더군요. 소책자 예제에는package 설정이 없었습니다. 그런데도 AJDT는 아무런 에러를 내벳지 않더군요. 툴을 처음 다뤄보는거라 에로가 많네요. ㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.05.13 13:04 신고 PERM MOD/DEL

    AJDT가 영.. 구린가 보군요.
    인텔리J로 넘어오세요.ㅋㅋ

Write a comment.