조언 된 메서드 호출에서 서명과 인수를 얻을 수 있지만 반환 값 또는 예외를 가져 오는 방법을 알 수 없습니다. 나는 그것이 주위를 사용하고 어떤 방법으로 진행될 수 있다고 가정합니다.AspectJ에서 반환 값이나 예외를 얻고 싶습니까?
14
A
답변
13
the following document과 같이 after() returning
및 after() throwing
어드 바이스를 사용할 수 있습니다. @AspectJ 구문을 사용하는 경우 @AfterReturning
및 @AfterThrowing
주석 (here 샘플을 찾을 수 있음)을 참조하십시오.
5
around()
조언을 사용하면 proceed()
을 사용하여 가로 채기 방식 호출의 반환 값을 가져올 수 있습니다. 원하는 경우 메서드에서 반환 한 값을 변경할 수도 있습니다.
public aspect mAspect {
pointcut mexec() : execution(* m(..));
int around() : mexec() {
// use proceed() to do the computation of the original method
int original_return_value = proceed();
// change the return value of m()
return original_return_value * 100;
}
}
6
또한 반환 값을 얻을 수 있습니다 :
public class MyClass {
int m() {
return 2;
}
}
것은 당신이 자신의 .aj 파일에 다음과 같은 측면이 있다고 가정 : 예를 들어
, 당신은 클래스 MyClass
내부 방법 m()
이 있다고 가정 조언을 회수 한 후 을 사용하십시오.
package com.eos.poc.test;
public class AOPDemo {
public static void main(String[] args) {
AOPDemo demo = new AOPDemo();
String result= demo.append("Eclipse", " aspectJ");
}
public String append(String s1, String s2) {
System.out.println("Executing append method..");
return s1 + s2;
}
}
받고 반환 값의 정의 측면 :
public aspect DemoAspect {
pointcut callDemoAspectPointCut():
call(* com.eos.poc.test.AOPDemo.append(*,*));
after() returning(Object r) :callDemoAspectPointCut(){
System.out.println("Return value: "+r.toString()); // getting return value
}
관련 문제
- 1. AspectJ에서 AfterThrowing시 예외를 삼키는 방법
- 2. Yahoo에서 Elisp로 주가를 얻고 싶습니까?
- 3. 피하는 피겨 차트를 얻고 싶습니까?
- 4. jQuery로 내부 HTML을 얻고 싶습니까?
- 5. 다른 프로젝트의 결과를 얻고 싶습니까?
- 6. 파이썬에서 십진수의 Ceil()을 얻고 싶습니까?
- 7. UITableViewCell에있는 UITextField에 대한 참조를 얻고 싶습니까?
- 8. PHP에서 사용자의 자동 프로파일 사진을 얻고 싶습니까?
- 9. boost :: threaded 멤버 함수에서 리턴 값을 얻고 싶습니까?
- 10. 프로그래밍 방식으로 장치의 USB 전력 소모를 얻고 싶습니까?
- 11. @ContextConfiguration 주석이 달린 클래스의 클래스 객체를 얻고 싶습니까?
- 12. Facebook Graph API - 친구들의 친구 목록을 얻고 싶습니까?
- 13. Http WebRequest를 사용하여 404 오류 페이지 컨텐츠를 얻고 싶습니까?
- 14. 안드로이드의 GridView에서 웹 페이지에 링크 할 이미지를 얻고 싶습니까?
- 15. AspectJ에서 HTTPServletRequest를 얻는 방법
- 16. AspectJ에서 여러 측면 처리하기
- 17. aop.xml을 사용하여 AspectJ에서 로딩 시간로드
- 18. AspectJ에서 제어 흐름을 변경하라는 조언
- 19. 나는 함수의 반환 값을 테스트하는 이상한 결과를 얻고 논리
- 20. 기능 내 기능 중 하나에서 DataTable을 반환 유형을 얻고 값
- 21. Ado.net은 저장 프로 시저에 값이나 형식을 전달합니까?
- 22. aspectJ에서 joinpoint로 인쇄하고 모든 joinpoint를 코드에 표시합니다.
- 23. Syslog 클라이언트에서 메시지를 받아들이 기 위해 Python에서 UDP 소켓 프로그램을 얻고 싶습니까?
- 24. GLUT 프로그램의 X 윈도우 ID를 얻고 싶습니까? 또는 X에서 GLUT 프로그램을 원격 제어하는 방법은 무엇입니까?
- 25. 얻고 실버
- 26. @Transactional의 범위를 최소화하고 싶습니까?
- 27. GLUT없이 OpenGL을 배우고 싶습니까?
- 28. 언제 OneTuple을 사용하고 싶습니까?
- 29. System.Diagnostics.Debugger.Break() java를 사용하고 싶습니까?
- 30. URL.Authority에서 벗어나고 싶습니까?