程序员的信仰

金麟岂是池中物,一遇风云便化龙

Follow me on TwitterRSS Feeds

  • Home
  • My Garage
    • Firefox插件
    • 精彩Feed
    • WordPress插件
    • mac软件
  • 5.12
  • 都谁猫着?
  • Tor It
  • 一路走好
  • 关于

Spring之经验教训(一)

Jul 18th

Posted by iJay in 技术生活 | 10 views

1 comment

在现在的项目中我们使用了spring + hibernate + struts的架构,在享受aop, orm, ioc, di带来的种种便利的同时,我们亦遇到了很多莫名其妙或者说刻骨铭心的教训,今天先整理两点,日后继续补充

经验一:时刻牢记,spring、hibernate对对象 进行了动态代理,尽量不要试图在动态代理后的对象上进行反射,尤其是field!

不管是hibernate的orm还是spring的声明式事务管理,都对原来的pojo、dao进行了动态代理。虽然s、h“号称”动态代理做得天衣无缝且无色无味,但是,那只是在“绝大多数情况下”,如果想对动态代理后的对象进行反射,麻烦便来了,代码片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void setCreditInfoStatus(CreditInfo info, CreditType type, CreditValidateStatus status) {
    ...
 
    Field[] fields = CreditInfo.class.getDeclaredFields();
 
    for (Field f : fields) {
        if (f.isAnnotationPresent(Credit.class) && f.getAnnotation(Credit.class).value() == type) {
            PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(CreditInfo.class, f.getName());
            if (pd != null)  {
                ...
            }
            break;
        }
    }
}

原先第7行写为 info.getClass(),乍一看与现有的代码功能上是一样的,但是别忘了让人又恨又爱的动态代理!上面代码返回的是真正的CreditInfo class,而左边的返回的是动态代理后的class,即意味着,第一个“if”永远返回的是false,除非动态代理后的对象的field上附带了原有的annotation

经验二:spring的声明式事务管理确很强大,强大到可以支持多线程,但是,结合上一点,不要在线程中调用this中的事务方法

声明式事务,即spring中使用aop织入或 @Transactional标记的方法注入事务容器,码农们可以完全不用操心何时begin,何时commit,何时 rollback,有没有嵌套,绝对傻瓜级的编程模型。但是,牢记,spring中的aop、annotation都是使用动态代理实现的,即,如果没有经过动态代理便也没有了事务管理,代码片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class AutomatedService{
    ...
 
    loanQueue.execute(new Runnable() {
 
        @Override
        public void run() {
            Thread thread =  Thread.currentThread();
 
            while (!thread.isInterrupted()) {
                try {
                    loanService.checkNSetLoanStatus();
 
                    Thread.sleep(loanStatusCheckIntervalMinutes * Consts.ONE_MINUTE);
                } catch (InterruptedException ex) {
                    thread.interrupt();
                }
            }
        }
    });
 
    ...
}

原先的checkNSetLoanStatus方法是定义在AutomatedService中的,且标记了@Transactional。 但是,令人发指的是,checkNSetLoanStatus中的事务没有被提交。在痛定思痛仔细回想了spring的声明式事务的本质后,豁然发现当调用this.checkNSetLoanStatus()时,并没有被织入事务管理。spring还没有霸道到或者说聪明到对this进行动态代理,于是将该方法移至其它service并注入,问题解决

aop, hibernate, orm, spring, struts, tips, transaction, 依赖注入

一周tweets更新 [2010-07-13]

Jul 13th

Posted by iJay in tweets | 3 views

No comments

  • 要看死福兰啊!!! #
  • 裁判眼瘸啊,这球明明乌拉圭犯规啊 #
  • 罗本这脚怎么能打飞呢!!! #
  • 边裁这眼终于看准了! #
  • 罗本的头球!!!荷兰能进决赛了!!! #
  • 荷兰屠城吧! #
  • 热烈庆祝橙子25场连胜,只剩一场就能绣星星了。无冕之王一朝加冕~~ #
  • 西藏,我来了~~ #
  • 唐骏当着全国人民的面说假话 // 唐骏要挂
    http://fl5.me/6hpfef #
  • 和@imfxcn 路过北航东门,看见路边武警三步一哨。@imfxcn :不会温宝宝来了吧?我:不可能,学生都放假了,丫作秀给谁看? #
  • 开心又删我状态了,这么久都快忘了这帮孙子还有这功能了。不就写了个温xx么,至于么,哎……我要姓温生个儿子绝对叫家宝,看心情说不定孙子还叫这名字。一个连领导人名字都不能拿来揶揄的民族生活该是多么乏味啊~ #
  • 初中哥们儿来北京,南锣鼓巷,四瓶啤酒,三瓶红酒 #
  • 做饭做饭 #
  • 还有三个小时开球,啤酒、瓜子、花生已配齐。将来找女人,只要能在我和哥们儿看球的时候下去帮我们买啤酒就行了 #
  • 五个哥们儿边升级边看葫芦娃边等球,勾起了我们童年的回忆。老八:现在哪还能拍出这么牛逼的动画片啊。我:现在的动画片就是一泡屎。老五:别侮辱屎。我:现在的动画片就是老五。吉吉:别夸老五 #
  • 穆勒也打算抢金靴么 #
  • 福兰这脚将成为本届世界杯最佳进球 #
  • 德国换上来的几个小将都很生猛啊 #
  • 中央六,唐伯虎点秋香。最近星爷专场啊,为了推长江七号II么 #
  • 荷兰必胜! #
  • 上半场对西班牙中场的抑制很成功,虽然脏了点。下半场该反击了 #
  • 比利亚太能装了 #
  • 今天两边门将都太牛逼了 #
  • 再下去都快看出心脏病了 #
  • 还剩八分钟,守住啊! #
  • 。。。。。。 #
  • 即日起,开展为期四年的章鱼扑杀运动,对象包括章鱼、鱿鱼、墨鱼仔,手段包括烧烤、刺身、墨鱼丸、章鱼丸子、清炒、白灼、铁板、鱿鱼丝 #
  • 英雄不能问出处 http://ff.im/nzXbH #
  • 别用 pi 了,用 tau 吧! http://ff.im/nzXDt #
  • “进啦进啦”溯源考 http://ff.im/nzYpC #
  • 味千拉面,章鱼烧 #
  • 看完玩动III,最后的确比较感动,不是因为他们的友情,而是从I开始这部片子就承载着我们的童年,我们是和Andy一起长起来的一代。尤其当开场You've got a friend in me响起时,初中的气味扑面而来 #
tweets

一周tweets更新 [2010-07-13]

Jul 13th

Posted by iJay in tweets | 1 views

No comments

  • 要看死福兰啊!!! #
  • 裁判眼瘸啊,这球明明乌拉圭犯规啊 #
  • 罗本这脚怎么能打飞呢!!! #
  • 边裁这眼终于看准了! #
  • 罗本的头球!!!荷兰能进决赛了!!! #
  • 荷兰屠城吧! #
  • 热烈庆祝橙子25场连胜,只剩一场就能绣星星了。无冕之王一朝加冕~~ #
  • 西藏,我来了~~ #
  • 唐骏当着全国人民的面说假话 // 唐骏要挂
    http://fl5.me/6hpfef #
  • 和@imfxcn 路过北航东门,看见路边武警三步一哨。@imfxcn :不会温宝宝来了吧?我:不可能,学生都放假了,丫作秀给谁看? #
  • 开心又删我状态了,这么久都快忘了这帮孙子还有这功能了。不就写了个温xx么,至于么,哎……我要姓温生个儿子绝对叫家宝,看心情说不定孙子还叫这名字。一个连领导人名字都不能拿来揶揄的民族生活该是多么乏味啊~ #
  • 初中哥们儿来北京,南锣鼓巷,四瓶啤酒,三瓶红酒 #
  • 做饭做饭 #
  • 还有三个小时开球,啤酒、瓜子、花生已配齐。将来找女人,只要能在我和哥们儿看球的时候下去帮我们买啤酒就行了 #
  • 五个哥们儿边升级边看葫芦娃边等球,勾起了我们童年的回忆。老八:现在哪还能拍出这么牛逼的动画片啊。我:现在的动画片就是一泡屎。老五:别侮辱屎。我:现在的动画片就是老五。吉吉:别夸老五 #
  • 穆勒也打算抢金靴么 #
  • 福兰这脚将成为本届世界杯最佳进球 #
  • 德国换上来的几个小将都很生猛啊 #
  • 中央六,唐伯虎点秋香。最近星爷专场啊,为了推长江七号II么 #
  • 荷兰必胜! #
  • 上半场对西班牙中场的抑制很成功,虽然脏了点。下半场该反击了 #
  • 比利亚太能装了 #
  • 今天两边门将都太牛逼了 #
  • 再下去都快看出心脏病了 #
  • 还剩八分钟,守住啊! #
  • 。。。。。。 #
  • 即日起,开展为期四年的章鱼扑杀运动,对象包括章鱼、鱿鱼、墨鱼仔,手段包括烧烤、刺身、墨鱼丸、章鱼丸子、清炒、白灼、铁板、鱿鱼丝 #
  • 英雄不能问出处 http://ff.im/nzXbH #
  • 别用 pi 了,用 tau 吧! http://ff.im/nzXDt #
  • “进啦进啦”溯源考 http://ff.im/nzYpC #
  • 味千拉面,章鱼烧 #
  • 看完玩动III,最后的确比较感动,不是因为他们的友情,而是从I开始这部片子就承载着我们的童年,我们是和Andy一起长起来的一代。尤其当开场You've got a friend in me响起时,初中的气味扑面而来 #
tweets

一周tweets更新 [2010-07-06]

Jul 6th

Posted by iJay in tweets | 1 views

No comments

  • 扁鹊曰”君有疾在腠理,不治将恐深。”桓侯删扁鹊贴。扁鹊复见,曰”君之病在肌肤,不治将益深。”桓侯封扁鹊ip权限90天。扁鹊复见,曰”君之病在肠胃,不治将益深。”家丁遂请扁鹊至侯府喝茶。扁鹊望桓侯而还走。桓侯故使人问之,扁鹊欲言,奈何可遣之词皆敏感,终不能语。桓侯遂死 #
  • 十号线知春路站的出口真他妈邪性,四个出口分别叫东南,东南,东北,东北 #
  • 微软,苹果,Google用户体验设计原则 http://ff.im/mXSCB #
  • 一大清早的就有人在最高院门口骂街 #
  • 学知桥下看见一辆敞蓬宝马沿学院路往北飞奔,心中暗骂:你丫也就趁刚下过雨敞个蓬得瑟一下,有能耐你敞一个月的! #
  • 边吃饭边看新闻联播真他妈心旷神怡 #
  • 我靠,这集火影太华丽了 #
  • 荷兰加油! #
  • 五道口王庄路往南终于拓宽了,人行道也铺好了 #
  • 操,堵路上了。我操,进球了! #
  • 荷兰顶住!等我到家换球衣画圈圈诅咒巴西! #
  • 到家了,换上法衣,作法! #
  • 施内德威武!!! #
  • 瓦卡卡,我法力无边啊~~~ #
  • 荷兰牛逼,五星巴西踢回家咯!今年绣颗星星吧~~ #
  • 这球越位了吧! #
  • Don't cry for me Argentina #
  • 我靠,西班牙要杯具了 #
  • 我操卡西牛逼 #
  • 我擦,又是点球加黄牌?! #
  • 无语了,裁判在调戏全世界的球迷么? #
  • 今天熬夜太他妈值了,五分钟内三个点球,一个没收,一个扑出,一个重发。张着嘴半天我什么都没喊出来。这场比赛将被载入史册! #
  • 比利亚的嗅觉太可怕了 #
  • 五个南美球队黄了四个,世界杯变形为欧洲杯 #
  • 村委干部组织,恶势力强占工程肇事 // 胆小者勿入,女生勿入
    http://fl5.me/3rfe9c #
  • 点卡没电了,而且还只能周二、五买电。现在还剩20度电,已经进入紧急状态了,空调开一个、29度,冰箱调低,饮水机关了,老五音箱关了。得亏不是电热水器,晚上还能洗热水澡;得亏后面两天晚上没球…… #
  • 刚才算了一下,电不够到明天晚上的,方案如下:1、今天晚上去老八家蹭饭(主要是蹭空调);2、明天晚上在公司多待会儿,尽量回来就睡觉;3、一会儿实在不行下午去逛商场;4、今晚早睡;5、手机去公司充电;6、晚上洒花露水,不点蚊香;7、作法求雨 // 妈的被低碳了 #
  • 低调开房,文明**。豆瓣“感谢国家”小组被解散 #
  • 钢炼二完结了,果然被我猜中了要去搞炼丹术,期待三吧 #
  • 9度电…… #
  • 四年前从北航卷铺盖滚蛋 #
  • 终于充上电了~~ #
  • SHEF – Swing HTML Editor Framework
    http://shef.sourceforge.net/ #
  • 群里聊麦的添加剂问题。我:麻痹中国人就是大惊小怪,媒体全他妈是标题党;石油成分多了去了,药里他妈还有呢;只要沾了化学俩字都他妈以为是化学武器;只要不超标你管别人往里搁什么;中国人吃的添加剂还少啊,别说石油成分了,都够还原出石油来的了;国内的媒体就该砍掉一半人,再招一半理工科出身的 #
  • 两点半荷兰,先找哥们儿切会儿台球 #
tweets

一周tweets更新 [2010-06-29]

Jun 29th

Posted by iJay in tweets | 4 views

No comments

  • 北航12楼开始离校了。4年了,都一轮了 #
  • 大叔终于进球了,多诺万啊~~ #
  • Google Doodles // doodle博物馆~~
    http://fl5.me/6f308v #
  • 美式英雄主义再次上演,多诺万孤身拯救大叔 #
  • 意大利先被搞了~ #
  • 越看越觉得意大利今天穿的是客场队服 #
  • 斯洛伐克的庆祝好像得了大力神杯一样,这就是足球的魅力 #
  • skeleton boy/Clemens Habicht http://ff.im/mEkWR #
  • 亚细亚的孤儿 http://ff.im/mEpyV #
  • iWangWang v0.3.0 Released // 虽然只是对网页旺旺的封装,但对于mac用户来说已经是个福音了。另外哥们儿的博客主题跟我的一样……
    http://fl5.me/6d2v89 #
  • 忙了一天,补记:北航的孩子们开始拍毕业照了 #
  • “母校就是那个每天你把她骂八遍,缺不允许别人骂的地方”,根叔威武! #
  • 妈的原先以为火星撞地球,上半场还没完就睡着了…… #
  • Doodle 4 Google – 我愛足球塗鴉比賽 // 球迷们来投票吧~~
    http://fl5.me/6c6qom #
  • 启睿诞生,320609第二代又添一丁! #
  • 比利亚这脚吊射太牛逼了!!! #
  • 雏田终于表白了,然后挂了,杯具…… #
  • @nancybuaa 老姐上推~~ #
  • 麻烦您RT的时候把上下文带上啊…… RT @nancybuaa: @jayxu 怎么表白?什么表白? #
  • 看到啥? RT @nancybuaa: @jayxu 我也看到啦~~我路过,应该马上告诉你们这些大LM的 in reply to nancybuaa #
  • 棒子回家喽~~ #
  • 多诺万站出来拯救大叔吧~ #
  • 熬夜和哥们儿喝冰啤看球绝对是惬意的生活 #
  • 本届世界杯第一场加时赛,超人没有拯救美国,大叔出局 #
  • magic mouse不适合做GUI开发…… #
  • 英格兰回家吧 #
  • 裁判误判,英格兰要输就输裁判上了。这长比赛将会成为进球大战 #
  • 不知道鲁尼在踢什么,换下去吧 #
  • 英格兰这回心服口服了吧,别怪人家裁判了 #
  • 裁判终于受到公开挑战了 #
  • 大局已定了 #
  • 钢炼二,死在自己爱人的墓前,表情如此幸福 #
  • 德国门将直接助攻得分! #
  • 12楼那帮孩子继承了我们的优良传统,挂出了床单,又是一个伤感的夏天 #
  • https://groups.google.com/ <https://groups.google.com/>证书不被信任?! #
  • 刚才敲错了,发现java的方法名可以带中文…… #
  • 本来还说看荷兰呢,结果让哥们儿拉出来当知心哥哥了。。。 #
  • 2010届北航离校床单文化展 // 今年的12楼比我们当年更有创意啊
    http://fl5.me/6brmgp #
  • 亚洲队伍全出局了 #
tweets
«12345»102030...Last »
  • MSN / Mail / Gtalk


    • Recent comments
    • Popular posts
    • Tags
    80's apple augmentum beijing blog coding drink firefox football friends gfw google iphone java job leopard linux m$ mac nano shanghai shopping tips tommy emmanuel tweets ubuntu wow 北航 呆着 周末 和谐社会 唐伯虎点秋香 小资 工作 愤青 招聘 朋友 歌词 烟 爱情 牢骚 犯二 语言文字 闹运会 驾照
    • 突然之间就开始想这帮货们了 (17)
    • Regain my honor (14)
    • 宝刀未老 (12)
    • 初夏,下雨天 (11)
    • 有些事该说了 (10)
    • 无轨门: 我要让笑容成为自己的招牌动作
    • emul: 呵呵,佩服
    • 旗杆: 友情支持~!支持
    • 低碳: 学习了,管用
    • iJay: 嗯,一直在我们身边,挥之不去
  • 烫手的山芋

    • 崔健 89 年天安门录音 - 3,793 views
    • 不用翻墙访问YouTube的方法 [zz] - 1,032 views
    • iTunes Store 中国 已开放注册 - 798 views
  • 随便看看

    • 美国杂笔(一)
    • 收集祝福
    • 欢迎各位来上海
  • 围脖

  • 我推

    Loading tweets...
    Follow me on Twitter!
  • 我听

    • Ronan Keating – The Way You Make Me Feel 2 hours ago
    • Linkin Park – Nobody's Listening 3 hours ago
    • Michael Jackson – Remember The Time 3 hours ago
  • RSS 点心师——纪姐

    • 北海道戚风——轻舞舌尖的曼妙滋味 September 24, 2009
    • 玫瑰奶酥&蔓越莓奶酥 September 15, 2009
    • mini 芝士蛋糕——口口幸福的滋味~~~ July 13, 2009
  • RSS 权记,很温馨

    • firefox下让右侧滚动条始终显示的几种实现方式 August 11, 2010
    • 从身份证号码中获取用户的性别和生日 August 11, 2010
    • Java HTML 解析器:jsoup August 10, 2010
  • I’m Here

  • Open Source I Used

  • User Login






    • Register
    • Lost your password?
    • 链接

      • 我写的书(合著)
Mystique theme by digitalnature | Powered by WordPress
Copyright © 2010 程序员的信仰
PR 1
Leave a verified comment using