2014년 6월 20일 금요일

[자바교육학원추천합니다. 우선 자바프록시 예제한번 볼까요? JDK PROXY예제,자바프록시예제]InvocationHanlder를 이용한 프록시메소드의 리턴값 가로채기

[자바교육학원추천합니다. 우선 자바프록시 예제한번 볼까요? JDK PROXY예제,자바프록시예제]InvocationHanlder를 이용한 프록시메소드의 리턴값 가로채기

대상 클래스의 프록시 메소드 인 sayHello가의 리턴 값이 InvocationHandler를 구현 클래스 HelloWorldHandler의 호출 메소드의 리턴 값으로 대체됨을 확인 할 수 있는데 예제를 이해하자.

InvocationHandler 인터페이스는 java.lang.reflect 패키지의 인터페이스이며 JDK1.3 이후에 나온 것 인데 프록시 호출 핸들러에 의해 구현되어야 하는 메소드 이다.

이 프록시 기반 프로그래밍의 구조를 이해하는 것은 Spring AOP 프로그래밍을 이해하는데 도움이 된다.

패키지 onj.edu.jdkproxy;

//jdk.lanf.Proxy를 이용하는 방법은 Proxy 인터페이스를 이용하여 
//객체를 생성하므로 반드시 인터페이스 필요, 인테페이스가 없는 경우 CGLIB이용
공용 인터페이스 HelloWorld로 {
공공 문자열 인 sayHello (문자열 MSG);
}


패키지 onj.edu.jdkproxy;

공용 클래스 HelloWorldImpl은을을 HelloWorld로 {구현
공공 문자열 인 sayHello (문자열 MSG) {
return "오라클자바에 오신것을 환영 합니다.... " + msg;
}
}


패키지 onj.edu.jdkproxy;

수입 java.lang.reflect.InvocationHandler;
수입 java.lang.reflect.Method에 에에;

공용 클래스 HelloWorldHandler 은의의의 InvocationHandler를 구현 {
개인 개체 targetObj = NULL;

공공 HelloWorldHandler (개체 대상) {
this.targetObj = 대상을;
}

공공 개체 호출 (개체 OBJ, 방법 방법, 개체 []에 인수)
throw 가능 객체를 를가 {발생

에서에서에서 System.out.println ( "메소드 이름"+ method.getName ());
개체 O = method.invoke (targetObj, 인수);
에서에서에서 System.out.println ( "값 반환 method.invoke :"+ O를);
"이걸로 리턴 ...."을 반환;
}
}



패키지 onj.edu.jdkproxy;

수입있는있는 java.lang.reflect.Proxy;

공용 클래스 JdkProxyClient {
공공 정적 무효 메인 (문자열 []에 인수) {
{시도
클래스 [] arrClass = {HelloWorld.class};
//HelloWorldHandler에는 target 객체를 인자로 넣어준다.
HelloWorldHandler 핸들러는 = 새로운 HelloWorldHandler (새 HelloWorldImpl ());
하여 HelloWorld로로 프록시 = (을 HelloWorld로로) Proxy.newProxyInstance
      (HelloWorld.class.getClassLoader () arrClass, 핸들러);
문자열의 = proxy.sayHello ( "이름");
에서 System.out.println ( "프록시 호출 후 ==>"+의);
} (예외 이메일) {잡기
e.printStackTrace ();
}
}
}



[결과]

메소드 이름 : 인 sayHello
method.invoke return값 : 오라클자바에 오신것을 환영 합니다.... your name...
Proxy 호출 후 ==> 이걸로 리턴....





오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com











오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com


평일주간(9:30~18:10) 개강(6/23)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (6/23)[기업100%환급]Spring ,MyBatis,Hibernate실무과정(6/23)[기업100%환급]SQL기초에서 Schema Object까지(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING(6/30)[기업100%환급]안드로이드개발자과정(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정평일야간(19:00~21:50) 개강(6/24)Spring3.X, MyBatis, Hibernate실무과정(6/24)안드로이드개발자과정(6/24)MyBatis3.X, Hibernate4.X ORM실무과정(6/26)SQL초보에서실전전문가까지(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)(7/03)웹퍼블리싱 마스터(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지주말(10:00~17:50) 개강(6/21)Spring3.X, MyBatis, Hibernate실무과정(6/21)MyBatis3.X, Hibernate4.X ORM실무과정(6/21)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지(6/28)SQL초보에서 Schema Object까지(6/28)안드로이드개발자과정(6/28)개발자를위한PLSQL,SQL튜닝,힌트(6/28)실무예제로 배워보는 jQuery(개발자/디자이너를위한)(6/28)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정(7/13)C#,ASP.NET마스터주말저녁(18:30~22:20) 개강(6/28)JAVA,Network&WEB&Framework(6/28)SQL기초에서실무까지


























































댓글 없음:

댓글 쓰기