import java.lang.reflect.Proxy;
import com.lbx.dao.impl.UserDAOImpl;
public class UserProxyFactory {
public static Object getProxy(Object object){
ProxyHandler p = new ProxyHandler();
p.setTarger(object);
return Proxy.newProxyInstance(UserDAOImpl.class.getClassLoader(), object.getClass().getInterfaces(), p);
}
}
服务层使用动态代理
Java代码
package com.lbx.service;
import com.lbx.dao.UserDAO;
import com.lbx.dao.impl.UserDAOImpl;
import com.lbx.interceptor.UserProxyFactory;
import com.lbx.model.User;
public class UserService {
//private UserDAO userDAO = new UserDAOImpl1(); //第一种就是写死,直接在方法里写
//private UserDAO userDAO = new UserDAOImpl2(); //第二种就是通过继承来实现(方法执行前后加一些业务逻辑)
//private UserDAO userDAO = new UserDAOImpl3(); //第三种是通过组合来完成的
UserDAO u = null;
Object object = UserProxyFactory.getProxy(userDAO);
/*public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}*/
/*public void add(User user){
this.userDAO.save(user);
}*/
public void add(User user){
if(object instanceof UserDAO){
u = (UserDAO)object;
}
u.save(user);
//u.delete();
}
}