java事物代理
来源:互联网 发布:java设置环境变量win10 编辑:程序博客网 时间:2024/06/05 09:50
package cn.itcast.utils;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Connection;import javax.ejb.TransactionAttribute;import javax.persistence.Transient;/** * 事务的代理类,可以代理任意的Service */public class TxProxy implements InvocationHandler{private Object src;//声明被代理类对象private TxProxy(Object src){//在私有的构造中给成员设置值this.src=src;}/** * 提供一个静态的方法返回代理对象 */public static Object factory(Object src){System.err.println("0:返回代理类");Object proxyedObj = //生成被代理类的接口的子类Proxy.newProxyInstance(TxProxy.class.getClassLoader(),src.getClass().getInterfaces(), new TxProxy(src));return proxyedObj;}/** * 以下是执行的句柄,当调用代理类的任意方法时都会调用这个方法 * 在这儿是管理事务的关键 */public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {//判断是否有事务的注解if(!method.isAnnotationPresent(Tx.class)){System.err.println("没有事务的注解,用户不需要事务。直接执行目标方法");return method.invoke(src, args);}//第一步:声明连接Connection con = null;Object returnValue = null;try{//第二步:获取连接con = DataSourceUtils.getConn();//第三步:设置事务的开始System.err.println("设置事务的开始");con.setAutoCommit(false);//第四步:调用目标类(被代理类)的方法returnValue = method.invoke(src, args);//第五步:调用如果成功提交System.err.println("调用如果成功提交");con.commit();}catch(Exception e){System.err.println("调用不成功回滚");con.rollback();throw e;}finally{con.close();DataSourceUtils.remove();}return returnValue;}}
0 0
- java事物代理
- java 事物
- java事物
- JAVA事物
- Java事物
- java数据库事物处理
- java spring 事物
- java事物处理
- JAVA数据库事物处理
- java中的事物管理
- Java事物(MySql)
- java事物操作
- java事物概念性介绍
- java事物处理
- Java 中的事物
- java中的事物
- Java基本概念-事物
- java中是事物
- [C++] 在文件里面找字符串,然后在前面增加一个字符串
- iOS自动化测试辅助工具--Reveal配置及使用
- Complex DML queries and clause push-down in Postgres-XC
- 页游向导的实现思路
- 微信平台之坐标系与位置
- java事物代理
- IBM小型机的关机方式总结
- AIX中LVM的理解
- MQTT的学习研究(3)moquette-mqtt 的使用之mqtt服务发布主题信息
- 在ubuntu中出现Call to undefined function: mysql_connect()
- NSDate
- Valgrind使用方法及举例(代码和效果以后补充)
- 网络流基础篇——Edmond-Karp算法
- Android Binder通信机制学习