2012-04-25 4 views
2

나는 이것에 대해 필사적으로 도움이 필요하다. 나는 이것을하기위한 방법을 온통 찾고 있었다. Tomcat 7에서 실행중인 웹 응용 프로그램에서 Spring AOP를 사용하고 있습니다. @code {preference}를 사용하여 메소드 pointcuts의 실제 인수 이름과 값을 인쇄하려고합니다. 먼저 클래스 파일을 -g 옵션으로 컴파일하면 트릭을 수행 할 수 있다고 생각했습니다. 그것은 작동하지 않았다. 그런 다음 AspectJ 로딩 타임을 사용하여 확실히 트릭을 수행 할 수있는 게시물을 읽었습니다. 내 Config.xml의 내 context.xml에Spring AOP에서 실제 메소드 인수 이름에 액세스하려면 어떻게해야합니까?

<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> 

에서

내가 MethodSignature.getParameterNames()를 호출 할 때

<context:load-time-weaver weaver-class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/> 

그러나 여전히 null을 반환 : 그래서 톰캣 7에 대해 다음을했다 .

내 질문은 : 조언 내에서 매개 변수 이름을 가져 오는 방법이 있습니까? 그렇다면 어떻게?

답변

1

디버그 정보로 컴파일해야합니다.

그런 다음 org.springframework.core.LocalVariableTableParameterNameDiscoverer의 인스턴스를 사용하여 매개 변수 이름을 확인할 수 있습니다.

+0

Bozho, 답장을 보내 주셔서 감사합니다. 당신과 마찬가지로 LocalVariableTableParameterNameDiscoverer가 트릭을 수행 할 것이라고 생각했지만 그렇지 않았습니다. 다른 제안? –

+0

디버그 정보가 있습니까? 내가 그것을 사용했기 때문에 작동한다. – Bozho

+0

나는 나의 셋업을 다시 한번 보았다. 나는 프록시 클래스 및/또는 인터페이스가 아마 그 길을 가고있는 것으로 의심했다. 내 가정이 올바른 것으로 바뀌 었습니다. @ Bosho : LocalVariableTableParameterNameDiscoverer를 사용하면 실제로 문제가 해결됩니다. –

관련 문제