최범균님의 스프링과 인터넷검색을 기반으로 제가 볼 용도의 글을 쓰는것입니다.

흐음.. 기본적으로 스프링AOP는 스프링의 빈 객체에 대해서만 적용된다.
즉 스프링을 이용하지 않는 객체에 AOP를 적용하고 싶다면...?

스프링의 xml 설정을 바꾸어서 AspectJ를 적용할 수 있다.

AspectJ 를 이용해서 그냥 new 등을 통해 생성된 객체에도 AOP 기능을 쓸 수 있다는 의미이다!!

예제 결과를 보기 전 까지는 이게 뭐지였음; 근데 실행문을 보고 나서야 의미를 알았음;
아마 AspectJ를 몰라서 그런거였겠지;?


객체와 Advice 를 weaving 할 설정은
<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE aspectj PUBLIC 
"-//AspectJ//DTD//EN"
"http://www.eclipse.org/aspectj/dtd/aspectj.dtd">

<aspectj>
// Aspect 의 설정 및 적용할 범위를 정의함 
<weaver>
<include within="madvirus.spring.chap05.board.service.*" />
<include within="madvirus.spring.chap05.board.Article" />
</weaver>
// 어떤 Aspect를 적용할지 정의함
<aspects>
<aspect name="madvirus.spring.chap05.aop.annot.ProfilingAspect"/>
</aspects>
</aspectj>

이렇게 어떤 패키지에 어떤 Aspect를 적용할지 설정 한다.  

 그 다음 스프링 설정 xml 에 <context:load-time-weaver /> 를 추가함

==============================================

AspectJ를 이용한 객체의 DI 처리..
 
스프링 컨테이너를 통해서 생성되는 빈객체는 의존관계처리가 가능하고, 결과 의존성도 줄이고 결합도도 낮출 수 있다.
허나 역시,  스프링 컨테이너를 통하지 않은 생성에서는 제어할 수 없다.

 이를 스프링의 AspectJ 지원기능을 이용하면 스프링 컨테이너밖에서 생성되는 객체에 대해서도 DI를 적용할 수 있게 된다.

해당 클래스에 
 @Configurable 어노테이션을 적용한다.
역시 설정에 weaving을 해야하고,  


'IT > 스프링' 카테고리의 다른 글

DispatcherServlet... more  (0) 2012.01.10
Spring 3.0 MVC 정리  (0) 2012.01.10
weaving??  (0) 2012.01.09
Pointcut 표현식... execution , within  (0) 2012.01.06
JointPoint ..?  (0) 2012.01.06

+ Recent posts