//log4j的使用见文章“log4j介绍”
import org.apache.log4j.Logger;
public class Person {
private Logger logger = Logger.getLogger(Person.class);
public void sleep(){
logger.info(“开始执行时间:“ + new Date());
System.out.println("睡觉中");
logger.info(“执行结束时间:” + new Date());
}
public void eating(){
logger.info("开始执行时间:“ + new Date()");
System.out.println("正在吃饭中");
logger.info("“执行结束时间:” + new Date()");
}
}
public interface IPerson {
public abstract void sleep();
public abstract void eating();
}
public class Person implements IPerson {
public void sleep(){
System.out.println("睡觉中");
}
public void eating(){
System.out.println("正在吃饭中");
}
}
import org.apache.log4j.Logger;
public class PersonProxy implements IPerson {
private IPerson person;
private Logger logger = Logger.getLogger(PersonProxy.class);
public PersonProxy(IPerson person) {
this.person = person;
}
public void eating() {
logger.info("开始执行时间:“ + new Date()");
person.eating();
logger.info("“执行结束时间:” + new Date()");
}
public void sleep() {
logger.info("开始执行时间:“ + new Date()");
person.sleep();
logger.info("“执行结束时间:” + new Date()");
}
}
package com.aptech.aop2;
public class PersonTest {
public static void main(String[] args) {
IPerson proxy = new PersonProxy(new Person());
proxy.eating();
proxy.sleep();
}
}
public class DynaProxyHandler implements InvocationHandler {
private Logger logger = Logger.getLogger(DynaProxyHandler.class);
private Object target;
//被代理对象
public void setTarget(Object target) {
this.target = target;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
logger.info("执行开始时间:" + new Date());
Object result = method.invoke(target, args);
logger.info("执行结束时间:" + new Date());
return result;
//返回method执行结果
}
}
import java.lang.reflect.Proxy;
public class DynaProxyFactory {
//obj为被代理对象
public static Object getProxy(Object obj){
DynaProxyHandler handler = new DynaProxyHandler();
handler.setTarget(obj);
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), handler);
}
}
public class PersonTest {
public static void main(String[] args) {
IPerson person = (IPerson) DynaProxyFactory.getProxy(new Person());
//返回代理类,代理类是JVM在内存中动态创建的,该类实现传入的接口数组的全部接口(的全部方法).
person.eating();
person.sleep();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有