使用JDK中的Proxy技术实现AOP功能
来源:互联网 发布:mysql怎么优化sql语句 编辑:程序博客网 时间:2024/05/17 04:26
package cn.com.xinli.service;
public interface UserDao {
public void save(String name);
public void update(String name, Integer personid);
public String getPersonName(Integer personid);
}
-----------------------------------------------
package cn.com.xinli.service.impl;
import org.apache.log4j.Logger;
import cn.com.xinli.service.UserDao;
public class UserDaoImpl implements UserDao {
Logger log=Logger.getLogger(UserDaoImpl.class);
String userName;
public UserDaoImpl() {
}
public UserDaoImpl(String userName) {
super();
this.userName = userName;
}
public String getUserName() {
return userName;
}
public String getPersonName(Integer personid) {
System.out.println("getPersonName方法被执行");
return userName;
}
public void save(String name) {
System.out.println("save方法被执行");
}
public void update(String name, Integer personid) {
System.out.println("update方法被执行");
}
}
--------------------------------------------------------------
package cn.com.xinli.aop;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import cn.com.xinli.service.UserDao;
import cn.com.xinli.service.impl.UserDaoImpl;
public class JDKProxyFactory implements InvocationHandler{
private Object targetObject;
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
UserDao bean=(UserDao)targetObject;
Object result=null;
System.out.println(method.getName()+"开始执行...");
result = method.invoke(targetObject, args);
System.out.println(method.getName()+"记录日志结束...");
return result;
}
public Object createProxyInstance(Object targetObject){
this.targetObject=targetObject;
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
}
-------------------------
测试:
@Test
public void test1(){
JDKProxyFactory factory=new JDKProxyFactory();
UserDaoImpl userDao=new UserDaoImpl();
UserDao proxyUserDao= (UserDao)factory.createProxyInstance(userDao);
proxyUserDao.save("张奇");
proxyUserDao.update("ca", 1);
}
- 使用JDK中的Proxy技术实现AOP功能[动态代理]
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- JDK中的Proxy技术实现AOP功能
- JDK中的Proxy技术实现AOP功能
- JDK中的Proxy技术实现AOP功能
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 2
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 3
- (9) 使用JDK中的Proxy技术实现AOP功能 以及 CGLIB生成代理
- (8) 使用JDK中的Proxy技术实现AOP功能 以及 CGLIB生成代理
- AOP之Proxy技术实现AOP功能
- AOP_1.入门及使用JDK中的Proxy技术实现
- 使用JDK中的Proxy技术来实现动态代理
- springAOP理解——java中的proxy实现AOP功能
- 常用操作
- 研究生在私企在仓管
- 嵌入式软件的移植
- 数据区,代码区,堆区,栈区
- awWebBrowser自动选择网页Select元素
- 使用JDK中的Proxy技术实现AOP功能
- 运动的小企鹅[思路 过程说明.]完成...
- hql处理count sum 产生别名的错误
- sturts2 输出标签
- 3689 浮云
- 真无聊啊
- 行列转换通用过程
- 有些东西从看的明到看的有感觉了,层次可能就不一样了。
- javaWEB项目session值为空