public interface UserService {
public String getName(int id);
public Integer getAge(int id);
}
public class UserServiceImpl implements UserService {
@Override
public String getName(int id) {
System.out.println("------getName------");
return "Tom";
}
@Override
public Integer getAge(int id) {
System.out.println("------getAge------");
return 10;
}
}
2、jdk动态代理实现
BeanFactiory 创建注入方法时使用
if (object.getClass().getPackage().getName().equals("")) {
ConnectionDynamicProxy connectionDynamicProxy = new ConnectionDynamicProxy();
connectionDynamicProxy.setTarget(object);
//daili object
Object proxyObject = Proxy.newProxyInstance(object.getClass().getClassLoader(),
object.getClass().getInterfaces(), connectionDynamicProxy);
return proxyObject;
}
public class ConnectionDynamicProxy implements InvocationHandler{ private Object target; public void setTarget(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; boolean needMyClose = false; Connection conn = (Connection) AppContext.getAppContext().getObject("APP_REQUEST_THREAD_CONNECTION"); if (conn == null) { conn = DBUtil.getConnection(); needMyClose = true; AppContext.getAppContext().addObject("APP_REQUEST_THREAD_CONNECTION",conn); } try { result = method.invoke(target, args); } finally { if (needMyClose) { conn = (Connection) AppContext.getAppContext().getObject("APP_REQUEST_THREAD_CONNECTION"); DBUtil.close(conn, null, null); AppContext.getAppContext().removeObject("APP_REQUEST_THREAD_CONNECTION"); conn = null; } } return result; } }