📄 dynamicproxyclass.java
字号:
package test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/*
* todo:这是一个动态代理类定义
* JDK1.2以后提供了动态代理的支持,
* 程序员通过实现java.lang.reflect.InvocationHandler接口提供一个执行处理器,
* 然后通过java.lang.reflect.Proxy得到一个代理对象,
* 通过这个代理对象来执行商业方法,在商业方法被调用的同时,执行处理器会被自动调用。
*/
public class DynamicProxyClass implements InvocationHandler
{
//定义事务对象
TransactionManager manager=new TransactionManager();
//定义一个被代理的对象
private Object proxyObject;
public Object getProxyObject() {
return proxyObject;
}
public void setProxyObject(Object proxyObject) {
this.proxyObject = proxyObject;
}
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
{
Object result=null;
if(method.getName().startsWith("print"))
{
try
{
manager.begin();
result=method.invoke(proxyObject, args);
manager.end();
}
catch(Exception e)
{
manager.rollback();
}
}
else
{
result=method.invoke(proxyObject, args);
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -