호출 집합에 대한 요청 및 응답의 (비교적) 비 침습적 인 로깅을 수행하는 유틸리티를 작성하고 싶었고 java-8 람다/함수 인터페이스를 사용하여 끝내라.함수/공급자를 통한 lambda 인수에 대한 액세스
의 샘플 클라이언트 호출 코드가 있다고 가정 해 봅시다 :
SomeReturn retVal = someObject.doSomething(arg1, arg2);
내가로 호출 할 수있는 레코더 유틸리티 작성 기대했다 :
SomeReturn retVal = Recorder.withRecording(() -> someObject.doSomething(arg1, arg2))
같은 모양 레코더 :
를public static <R> R withRecording(Supplier<R> call) {
R response = call.get();
// Record the response
return response;
}
그러나 요청 인수를 캡처하는 방법을 식별하지 못했습니다 (및 요청 st 개체) Supplier
에서 (그리고 올바르게 - Supplier
는 그것에 관련되지 않습니다.) 심지어 그들은 java.util.function.Function
도 여기에 도움이되지 않을 것이라고 생각합니다. 왜냐하면 그들은 스스로 상태를 다루지 않기 때문입니다. 우리가 않는 다른 어떤 옵션을
Object withRecording(Object target, Method method, Object[] arguments)
같은 것들을 의지하지 않고
? 나는 해결책으로 AOP를 사용할 수 있지만, 우리가 AOP를없이 할 수 있는지 알고 싶다.
미리 감사드립니다.
가능하더라도 (나는 간단하게 생각하지 않습니다), 당신은 수천 Recorder.withRecording'의 그 녹음을 해제/제거하고 싶은 날에는 모자를 먹을 것입니다. 당신이 말했듯이, 이것은 AOP를위한 완벽한 시나리오처럼 들립니다. – Tunaki