锁定老帖子 主题:经验不足,差一点重构整个系统
精华帖 (0) :: 良好帖 (15) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-30
呵呵,很久没有来JavaEye写文章了,公司工作也不让随便上网,也好,工作中发现了不少问题和大家分享吧。 1. 郁闷的Form表单问题,请看下面代码: xml 代码
这真已经是一个再简单不过的Struts2的表单提交了,不过运行后,你会发现user.id=null。 为什么? 你现在试试把代码换成以下就好了。 xml 代码
或者: xml 代码
原因看出来了吧,重点就是这个 method="post", Form默认的传输是GET,你得养成好习惯记得在每写一个FORM的时候,就给加上。
2. 吓出一身冷汗的Spring scope问题。 天天Struts2,Webwork,Spring,Hibernate挂在嘴边,结果一用的时候才真正明白,真正懂这几个框架的人真的非常非常少。更别去谈成功的项目了。 以下代码在任何SSH框架的项目里是太平常的我都不愿意写了: java 代码
然后把 userService 注入:
xml 代码
代码单元测试也通过了,社会和谐了,呵呵。可是一放到服务器上,开始出莫名奇妙的问题了,测试人员不停的提交那些根本不可能出现的问题,好吧。开断点,看着断点也吓出一身冷汗:许多本应该为null的对象,竟然都有值了!@##¥%。 代码查了又查看了又看,终于又回到这个XML配置片断了,修改成如下: xml 代码
就是加了一个 scope="prototype"。 然后回头看看项目,几十个Action竟然都没有加,汗,测试员提出的问题应该和这个有关,大家都知道Spring的默认设置为:singleton,Spring的容器只维护该类的一个实例感觉应该和启动后,Tocmat加载的Servlet挺相似。如果这个时候Action设置成了singleton,大家可以试着想像一下在那个Action里的 user, createDate,等等其它私有属性在那几个测试员的交差点击下,会出现多么混乱的情况。 3.Hibernate的滥用: 我一直承认自己的Hibernate用的不好,所以更多的时候是在测试,以达到最佳实践。从最开始对Hibernate的疯狂吹捧,再到将Hibernate项目转成JDBC项目之痛,到现在反复看文档做测试尽可能客观的来对待Hibernate,已经有一年多了。 我这个项目其实根本不适合使用Hibernate 1.从一开始就不是按照对象建模再建表,对象建立都是跟表走。 2.表结构冗余非常严重,一般通过关联取的信息已经在主控表里了。 3.用着最新的Hibernate却当Hibernate2.1使用,那些什么lazy, cache, proxy, out-join全部都不管,这也是让我最郁闷的一点,lazy=false,你就等着Hibernate给你刷屏吧。 想改变这一切,可是我来的有点晚,项目已经做了一大半了,要全部设计的话似乎已经不可能了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-31
呵呵,你们公司用Struts2.0吗?
|
|
返回顶楼 | |
发表时间:2008-01-01
不是,是Webwork2,应该就是包名不一样。
|
|
返回顶楼 | |
发表时间:2008-01-08
呵,呵,也有同感啊.
|
|
返回顶楼 | |
发表时间:2008-01-23
局部User对象不就好了吗
|
|
返回顶楼 | |
发表时间:2008-09-18
感觉你的文章都不错
|
|
返回顶楼 | |
发表时间:2008-09-19
楼主要重写系统架构,不是小步重构的问题啊
|
|
返回顶楼 | |
发表时间:2008-09-25
第2点的确很容易出错。
|
|
返回顶楼 | |
发表时间:2008-09-25
看来,用架构之前应该先搞透
|
|
返回顶楼 | |
发表时间:2008-10-06
呵呵 好久没研究WEB SSH里的东西了,亲切又陌生
|
|
返回顶楼 | |
浏览 4130 次