2017-11-24 24 views
0

스프링 부트 레스트 서비스에서 서비스 호출 전에 약간의 변경을하기 위해 인터셉터를 작성했습니다.인터셉터 preHandle HanderMethod에 어떻게 액세스 할 수 있습니까?

내 코드를 표시하는 그림을 추가하여 preHandle 메서드를 작성했습니다. 사진에서

, 나는 핸들러에있는 "orginationTaskServerMockEnabled = true"로 값을 가지고 싶어 -> bean-> mHandler -> dashboardConfig-> originationTaskServerMockEnabled

가 나던에 의해 내가 시도가 가능하다 HanlderMethod에서 값을 가져 오십시오. 그렇다면 제발 도와주세요.

enter image description here

+0

어떻게하면 'dashboardConfig'에서 추출 했나요? – Bnrdo

+0

HandlerMethod를 사용해 보았습니다. 그러나 나는 그것을 얻을 수 없었다. – Maharajan

답변

0

이 인터셉터의 preHandle에서 핸들러 인수에 액세스 할 수 없습니다. 핸들러 메소드를 실제로 호출하기 전에 호출됩니다. 실제 인수 유형의 해석은 호출 중에 수행되므로 preHandle 실행 중에 인수 값은 아직 해결되지 않습니다 (그러나 인수는 Object handler). 실행 중에는 HttpServletRequestHttpServletResponse 만 알려져 있으므로 요청에 데이터가 첨부되어 있으면 데이터를 가져올 수 있습니다.

다른 방법으로는 애스펙트를 사용하여 컨트롤러 메서드로 둘러 쌀 수 있습니다. 거기에서 메서드 인수를 잡고 전처리를 수행 할 수 있습니다.

@Around("execution (* com.pck.controllers.*.*(..)) && @annotation(org.springframework.web.bind.annotation.RequestMapping)") 
public Object beforeHandler(ProceedingJoinPoint p){ 
    Object args[] = joinpoint.getArgs(); 
    return joinpoint.proceed(); 
} 
+0

정보를 제공해 주셔서 감사합니다. – Maharajan