public class NewlecExam implements Exam{
public int total()
{
int result = kor + eng + math + com;
return result;
}
}
long start = System.currentTimeMillis();
SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String str =dayTime.format(new Date(start));
System.out.println(str);
/*---------------------------*/
/*---------------------------*/
long end = System.currentTimeMillis();
String message = (end-start) + "ms가 걸림";
System.out.println(message);
이 코드들을 프락시를 통해서 AOP을 구현한다.
프락시 클래스에 구현되는 Cross-cutting Concern라고 한다.
아래는 프록시의 예시이다.
Exam proxy = (Exam) Proxy.new.ProxyInstance(
NewlecExam.class.getClassLoader()
, new Class[] {Exam.clss}
, new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
return null;
}
});
int total = proxytotal();
float avg = proxy.avg();
public static void main(String[] args){
Exam exam = new NewlecCalculator();
Exam examProxy = (Exam) Proxy.newProxyInstance(
NewlecExam.class.getClassLoader(),
new Class[](Exam.class),
new InvocationHandler(){
@Override
public Object invoke (Object proxy
, Method method, Object[] args) throws Throwable{
long start = System.currentTimeMillis();
SimpleDateFormat dayTime =
new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String str = dayTime.format(new Date(start));
System.out.println(str);
/*--------------------*/
Object result = method.invoke(exam, args);
/*--------------------*/
long end = System.currentTimeMilis();
String message = (end-start) + "ms가 걸림";
System.out.println(message);
return result;
}//invoke
int result = examProxy.total();
System.out.println("total is" + reuslt);
}//InvocationHandler
)//examProxy
}//main