이번 강좌에서는 기존에 작성한 AOP 예제를 애너테이션(@) 기반에서 POJO & XML 기반으로 변경해 보도록 하겠습니다.
POJO 가 뭔지 모르신다구요? 그건 다른 강좌를... 설명하기가 그리 길진 않치만... 제가 게을러서이기도 하지만... 자꾸 삼천포로 안 빠지려구... 계속 변명 중... 이 시간에 설명했으면 이미... 그래도 지나갔으니.. 쿨락
변경할 곳은 딱 2 군데 뿐입니다.
먼저 MyAspect.java 되겠습니다.
기존 |
신규 |
@ 애너테이션 기반 SpringFramework 종속 |
POJO & XML 기반 SpringFramework 에 대한 종속성이 없음 |
package aop002; import org.aspectj.lang.JoinPoint;
@Aspect |
package aop003; import org.aspectj.lang.JoinPoint; public class MyAspect { |
소스 코드를 비교해 보면 @Aspect 와 @Before 가 사라졌습니다. 그리하여 aop003 패키지의 MyAspect.java 는 POJO 가 되었군요.
그럼 이번에는 Spring 설정 파일인 expert.xml 을 보도록 하겠습니다.
기존 (중략) |
신규 (중략) |
<aop:aspectj-autoproxy /> <bean id="myAspect" class="aop002.MyAspect" /> <bean id="boy" class="aop002.Boy" /> <bean id="girl" class="aop002.Girl" /> |
<aop:aspectj-autoproxy /> <bean id="myAspect" class="aop003.MyAspect" /> <bean id="boy" class="aop003.Boy" /> <bean id="girl" class="aop003.Girl" /> <aop:config> <aop:aspect ref="myAspect"> <aop:before method="before" pointcut="execution(* housework())" /> </aop:aspect> </aop:config> |
오호 기존 MyAspect.java 에서 사라졌던 애너테이션들이 신규 expert.xml 에 태그로 나타나고 있군요. 당연하겠죠.
그럼 비교할 것은 기존 MyAspect.java 와 expert.xml 을 비교하는 것이 더 좋겠군요.
비교 들어갑니다.
줄 긋기는 안했습니다. 선이 너무 교차할 것 같아서.. ^^
각 색상을 보고 5분간 음미하세요.
그리고 혹시나 하는 마음에 Spring 설정 파일 expert.xml 전체 소스를 올려봅니다.
물론 위에 소스 압축 파일 해제 하시면 다 있긴 합니다만... 아 그리고 패키지는 aop003 패키지 입니다.
<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"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<aop:aspectj-autoproxy />
<bean id="myAspect" class="aop003.MyAspect" />
<bean id="boy" class="aop003.Boy" />
<bean id="girl" class="aop003.Girl" />
<aop:config>
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut="execution(* housework())" />
</aop:aspect>
</aop:config>
</beans>
자 이제 Start.java 를 실행해 보시면 잘 실행된 결과를 확인하실 수 있습니다.
@ 애너테이션 기반 AOP vs XML 설정 파일 기반 AOP
애정남은 아니지만 유지보수와 소스 파악을 위해서는 XML 설정 파일 기반 AOP 에 강력하게 한표를 던지겠습니다.
몇 달 후에 소스를 보았을 때를 상상해보시면 또는 다른 개발자가 소스를 파악하려고 할 때라면 애너테이션 기반 vs XML 설정 파일 기반의 장단점이 확 들어오실 겁니다. 무엇보다도 POJO 를 사랑하기 때문이기도 하구요.
제 강좌는 그 때 끄 때 둘을 섞어서.. 왜냐하면 귀찮기.. 아니구요. 우리가 아무리 XML 설정 기반을 사랑할지라도 실무에서 부딪히는 Spring AOP 는 @ 애너테이션 기반일 경우도 허다하기 때문에 두 경우 모두에 대한 학습 모두 필요하기 때문입니다.
이번 강좌는 여기까지 입니다.
그럼 모두 모두 좋은 하루 되세요.
PS: 솔로부대 만세.. T^T
'강좌 > Spring 3.0' 카테고리의 다른 글
014. 애너테이션 기반 DI, AOP, 스프링 설정 파일 (15) | 2013.01.23 |
---|---|
013. AOP - 기초 완성 (14) | 2013.01.23 |
011. AOP 일단 덤벼 보자 - 용어편 (16) | 2013.01.23 |
010. AOP 일단 덤벼 보자 - 설명편 (40) | 2013.01.23 |
009. AOP 일단 덤벼 보자 - 실전편 (5) | 2013.01.22 |