(1) Before Advice : <aop:before>
(2) After Returning Advice : <aop:after-returning>
FaqBoardImpl.java
package sp.aop.service; import org.springframework.stereotype.Component;
@Component("faqBoard") @Override |
NoticeBoardImpl.java
package sp.aop.service; import org.springframework.stereotype.Component;
@Component("noticeBoard") @Override |
BoardController.java
package sp.aop.controller; import javax.annotation.Resource; import org.springframework.web.servlet.ModelAndView; import sp.aop.service.Board;
public class BoardController extends
@Resource(name="noticeBoard") } |
(1) Before Advice : <aop:before>
- 대상 객체 및 호출되는 메서드에 대한 정보나 전달되는 파라미터에 대한 정보가 필요한 경우 org.aspectj.lang.JoinPoint 타입의 파라미터를 메서드에 전달함 => public void before(JoinPoint joinPoint){ ... }
- 리턴 타입이 대부분 void인데, 그 이유는 리턴값을 갖더라도 실제 Advice의 적용 과정에 아무런 영향이 없기 때문.
- 주의사항 : 메서드에서 예외를 발생시킬 경우 대상 객체의 메서드가 호출되지 않게 됨
package sp.aop.advice; import org.aspectj.lang.JoinPoint;
public class LogAdvice { public Object logPrint(ProceedingJoinPoint joinPoint) throws Throwable{ |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <context:annotation-config/> </beans> |
<<===== START =====>> |
(2) After Returning Advice : <aop:after-returning>
- 대상 객체의 메서드가 정상적으로 실행된 후에 공통 기능을 적용하고 싶을 때 사용하는 Advice
- Advice를 구현한 메서드에서 리턴 값을 사용하고 싶다면 returning 속성을 사용하여 리턴 값을 전달받을 파라미터의 이름을 명시
<aop:after-returning pointcut-ref="publicMethod" method="afterReturning" returning="obj"/>
- 대상 객체 및 호출되는 메서드에 대한 정보나 전달되는 파라미터에 대한 정보가 필요 한 경우 org.aspectj.lang.JoinPoint를 파라미터로 추가.
public void afterReturning(JoinPoint joinPoint, Object obj){ ... }
package sp.aop.advice; import org.aspectj.lang.JoinPoint;
public class LogAdvice { public Object logPrint(ProceedingJoinPoint joinPoint) throws Throwable{ |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <context:annotation-config/> </beans> |
<<===== START =====>> |
[참고자료] Spring 3.0 프로그래밍-최범균
'프로그램 > Spring 3.0' 카테고리의 다른 글
Advice 타입 별 클래스 작성 <aop:after>, <aop:around> (0) | 2012.05.05 |
---|---|
Advice 타입 별 클래스 작성 <aop:after-throwing> (0) | 2012.05.05 |
AOP 심플예제 (0) | 2012.05.03 |
AOP - XML 스키마 기반 - Aspect 설정 (0) | 2012.05.01 |
AOP - XML 스키마 기반 (0) | 2012.05.01 |