XML설정
advice 클래스
public class Advisor {
public String returner(ProceedingJoinPoint joinPoint, HttpServletRequest req) throws Throwable {
String URI = req.getRequestURI();
String contextPath = req.getContextPath();
joinPoint.proceed();
System.out.println("after");
System.out.println(URI);
System.out.println(contextPath);
String returnURI = URI.substring(contextPath.length());
return returnURI;
}
}
advice를 등록한다.
<bean id="myAdvice" class="com.zxy.Advisor" >
AOP-Config설정을 한다
<aop:config>
<aop:aspect ref="myAdvice">
<aop:pointcut id="myPointCut" expression="execution(* test..*Controller.*(..)) and args(req)" />
<aop:around method="returner" pointcut-ref="myPointCut" />
</aop:aspect>
<aop:aspect ref="myAdvice">
<aop:pointcut id="myPointCut2"
expression="execution(* test..*(javax.servlet.http.HttpServletRequest, String)) and args(req, ctg)" />
<aop:around method="returner3" pointcut-ref="myPointCut2" />
</aop:aspect>
</aop:config>
<aop:aspect>태그의 ref는 참조할 advice bean id
HttpServletRequest를 받아서 URI를 받아 쓰고 싶은 경우가 생길 것이다.
파라메터를 받아 쓰고 싶은 경우는
execution에서 지정한 메서드 인자를 (..) 대신 타입을 패키지를 포함해서 써주고 args()도 추가해 주어야 한다.
(javax.servlet.http.HttpServletRequest, String) and args(req, ctg)
args()의 인자는 변수명을 쓴다.
'스프링(Spring)' 카테고리의 다른 글
Invalid character found in method name. HTTP method names must be tokens (0) | 2018.01.15 |
---|---|
Spring + Mysql + MyBatis (0) | 2017.10.29 |
스프링 설정#4 예외처리 하기 (0) | 2017.10.06 |
스프링설정 #3 Transaction설정 (0) | 2017.10.06 |
스프링 설정#2 Mapper 자동 생성 (0) | 2017.10.06 |