A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客   /  2012-6-28 20:12  /  11159 人查看  /  27 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刘蕴学 发表于 2012-6-29 22:34
什么时候你把我楼上的代码看完了你在上来说话吧,或者你是查资料,还是自己写,找人写,都行,只要你写的 ...

代码今天是上不了了,手机党,你懂的。明天倒是可以给你看看。但是,我又觉得你说的是个伪命题,动态代理的关键部分不过十行左右的代码,会了就是会了,不会就是不会。技术就是一层窗户纸,一捅就破了。又不是大规模开发,就这么点小伎俩谁还能比谁写的好多少?明天也好膜拜下。我还是什么都不说了,低调才是最牛逼的炫耀,呵呵。
回复 使用道具 举报
本帖最后由 刘蕴学 于 2012-6-30 00:13 编辑
赵倩倩 发表于 2012-6-29 22:49
代码今天是上不了了,手机党,你懂的。明天倒是可以给你看看。但是,我又觉得你说的是个伪命题,动态代理 ...

10几行是吧?恭候大驾,另外针对楼主的问题,参见spring框架,反射javabean部分的aop实现
回复 使用道具 举报
刘蕴学 发表于 2012-6-29 22:50
10几行是吧?恭候大驾,另外针对楼主的问题,参见spring框架,反射javabean部分的aop实现 ...

方法一不是动态代理,而是包装设计模式,不讨论。
方法二就是利用反射搞了一下,也不讨论。
方法三倒还精彩些,不过也没用到什么特别的东西,也不讨论了。
方法四不错,用了一些不常见的东西,看起来很牛逼的样子。呵呵。说明了刘童鞋还是个很爱钻研的好孩子。

另外,如果没能看懂刘童鞋代码的朋友,我介绍给大家看篇文章,看完了,也应该就明白了。
http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
http://www.ibm.com/developerworks/cn/java/j-lo-proxy2/index.html#major8
回复 使用道具 举报
刘蕴学 发表于 2012-6-29 22:50
10几行是吧?恭候大驾,另外针对楼主的问题,参见spring框架,反射javabean部分的aop实现 ...

本人不才,刘童鞋拿着以前写的代码,我也只好也拿出很久前写的代码了,相信聪明的你一看就明白。虽然不如刘童鞋的精彩,但也是一种动态的最佳实践。
另外有两点,
刘童鞋放出的代码,似乎是某套题目中的节选,出现在本论坛难免让人不联想到是某套题,大家懂的。放出来还是不太好。

还有就是,刘童鞋显然是已经拿到了锤子,但是也不能满眼都是钉子,在决定一种方案的时候,还是要考虑考虑什么才是本问题的关键点,什么才是这种方案的最佳实践。

关于这么点事情,纠结过来,纠结过去,让大家见笑了,还请见谅。:)
  1. private DaoFactory() {}
  2.         private static DaoFactory factory = new DaoFactory();
  3.         public static DaoFactory getInstance() {
  4.                 return factory;
  5.         }
  6.         public EmployeeDao getEmployeeDao() {
  7.                 return (EmployeeDao) Proxy.newProxyInstance(DaoFactory.class.getClassLoader(), EmployeeDaoHibernateImpl.class.getInterfaces(), new InvocationHandler() {
  8.                         Session session = null;
  9.                         Transaction transaction = null;
  10.                         @Override
  11.                         public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
  12.                                 EmployeeDao employeeDao = new EmployeeDaoHibernateImpl();
  13.                                 try {
  14.                                         session = ThreadLocalUtil.getSession();
  15.                                         transaction = session.beginTransaction();
  16.                                        
  17.                                         Object object = method.invoke(employeeDao, args);
  18.                                        
  19.                                         transaction.commit();
  20.                                        
  21.                                         return object;
  22.                                        
  23.                                 } catch(Exception e) {
  24.                                         if(transaction!=null)
  25.                                                 transaction.rollback();
  26.                                         throw new RuntimeException(e);
  27.                                 } finally {
  28.                                         if(session != null) {
  29.                                                 ThreadLocalUtil.closeSession();
  30.                                         }
  31.                                 }
  32.                         }
  33.                 });
  34.         }
复制代码
回复 使用道具 举报
再跟大家推荐另一篇文章吧,关于动态代理的前生今世,帮助大家理解动态代理的存在意义。

动态代理的前世今生.pdf

316.16 KB, 下载次数: 171

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1 你这个pdf,要比代码给力

查看全部评分

回复 使用道具 举报
赵倩倩 发表于 2012-6-30 10:56
再跟大家推荐另一篇文章吧,关于动态代理的前生今世,帮助大家理解动态代理的存在意义。 ...

是不是钉子我不知道,但是吧,你看见userinfo第一反应是什么?带get set 的封装,没别的东西,除了web方面的javabean想不到别的了。
回复 使用道具 举报
赵倩倩 发表于 2012-6-30 10:52
本人不才,刘童鞋拿着以前写的代码,我也只好也拿出很久前写的代码了,相信聪明的你一看就明白。虽然不如 ...

咱们俩讨论的重点不在题,也不在技术本身,你走的路跟我走的路有很大区别,事实上我很少去接触框架,除非我自己可以真正的变相实现这些技术,我在很多年里并没有像大部分程序员一样去接触新技术,而是去实现我掌握的技术本身是怎么出来的,呵呵,这个代理的4份代码就是根据很早之前那会不会代理的时候逐渐重构出来的,不过当然理论方面我确实不行,你让我说我也说不明白,这是软肋,所以我一般不会去讲什么原理,都是拿代码来阐述我的观点,呵呵
回复 使用道具 举报
赵倩倩 发表于 2012-6-30 10:52
本人不才,刘童鞋拿着以前写的代码,我也只好也拿出很久前写的代码了,相信聪明的你一看就明白。虽然不如 ...

你这个代码倒是让我想起来struts多线程环境session存储问题,不过主干代码不全,我也不好猜测你这个local的具体实现,呵呵
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马