java 에이전트 jdk 동적 에이전트 응용 프로그램 열

자바 에이전트는 jdk 동적 에이전트, cglib 에이전트가 있는데 여기서 jdk 동적 에이전트만 말하자면 jdk 동적 에이전트는 주로 자바 반사 메커니즘(기존 자바.lang.reflect 패키지)의 원리는 (가수, 매니저가 예를 들면): 공공 인터페이스를 구축한다. 예를 들어 가수public interface Singer;구체적인 클래스로 인터페이스를 실현한다. 예를 들어 주걸륜, 그는 가수이기 때문에 Singer를 실현한다. class My Singer implements Singer가 에이전트 클래스를 구축한다. 여기가 바로 매니저이다. 그는 Invocation Handler 클래스를 실현하고 invoke 방법을 다시 써야 한다. 그러면 무슨 일이 있으면 주걸륜(구체적인 클래스)을 찾으려면 매니저(대리 클래스)에게 먼저 처리해야 한다.대리인이 당신을 만날지 말지 결정하고 있습니다 (이 방법은 실행할지 말지) 1. 가수 인터페이스
 
public interface Singer {

public abstract void sing();

public abstract String s();
}
2, 구체적인 가수
 
public class MySinger implements Singer {
public void sing() {
// TODO Auto-generated method stub
System.err.println(" 。。。。");
}
}
3, 에이전트 클래스 (매니저)
 
public class agent implements InvocationHandler{
public Object target;

//
public Object bind(Object target){
this.target=target;
// Proxy
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}

//
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object o =null;
System.out.println(" ");
System.out.println(" ");

o = method.invoke(target, args);//

System.out.println(" ");
return o;
}
}
4. 테스트 (왜 인터페이스가 가능한지, 다음에 에이전트가 돌아오는 것은 그들의 인터페이스 클래스입니다. 이것은 하나의 에이전트 클래스를 원하면 여러 클래스를 대리할 수 있습니다. 이 클래스가 같은 인터페이스라면 실현됩니다)
 
public class Test {
public static void main(String[] args) {
//
agent a =new agent();
Singer s= (Singer) a.bind(new MySinger());
s.sing();
}
}

좋은 웹페이지 즐겨찾기