论坛首页 Java企业应用论坛

对Annotations忍耐的极限,谈谈常用框架Annotations使用感受

浏览 25257 次
精华帖 (0) :: 良好帖 (14) :: 新手帖 (5) :: 隐藏帖 (3)
作者 正文
   发表时间:2009-08-12  
rongxh7 写道
各大开源框架都在加大对Annotation的支持,这也是应Java新版本的需要。若能活用,能对开发带来较大的便利。
Spring从2.0开始对Annotation支持,当时可能不够完善,但2.5以及以后稳定版本的3.0会更加完善。
同理,iBatis刚开始支持Annotation,也需要在一定时间的更新版本中完善。
Hibernate的Annotation本就是Hibernate项目下的一个子框架,有着较久的历史,现在的版本已发展3.4.0GA。随着Hibernate得到Java官方的认同,Hibernate Annotation也大大弥补了JPA的不足。
至于Struts2的Validation框架,不管是XML形式还是Annotation形式,个人都不建议使用。直接写Java语句验证或者通过整合Ajax的方式异步验证,也不失为一种好方法。Struts 2.0加进的Annotation也是不完善的版本,但2.1.6GA版本,Annotation在Action配置方面做得非常不错,不妨学习使用。

很多时候,新事物都需要经历漫长的时间才能让人们接受,原因之一是新事物尚不够完善,原因之二是人们的观念还不能转变。Annotation的目的是使那些厌倦了大量XML配置文件的开发者,能够以另一种便捷的方式来开发,本意是好的。而且,那些框架的背后,都会有一群积极的开发者正在不断完善Annotation方面的API,所以,会越来越完善。

如果Annotation这么容易就能令楼主达到忍耐的极限的话,可能,Annotation真的不适合你吧!建议楼主以后勿用Annotaion也,用回XML配置文件,这样对你会好点。开玩笑说一句:搞程序的最重要是要确保让自己心情舒畅,自寻烦恼就没有必要了!呵呵

我受不了的是struts2 Acion配置将xxx.jsp之类的东西写在代码里面,另外,如果一个Action的Result多一些,就更麻烦了。还有就是XML+COC风格的配置已经足够简单,比Annotation还要简单,所以觉得Annotation有点鸡肋了。
至于验证,我完全同意你的观点。
0 请登录后投票
   发表时间:2009-08-12  
haole 写道
问一个题外问题,在spring MVC annotations中,表示session的标注中,如果session过期如何处理,即使判断为null,也是报后台错,最好能够判断,给出合适的提示。

永远都不要用session吧。
关于SpringMVC,比较令人讨厌的是总离不开request之类的servlet对象,我们参考了struts2的做法,将request对象绑定在ThreadLocal中,接合springMVC的interceptor,可以很好的解决这个问题。至于Session,如果万不得已非要使用,那么就从request中获取吧。
0 请登录后投票
   发表时间:2009-08-12   最后修改:2009-08-12
cats_tiger 写道
mysoko 写道
struts2实现restful就需要annotation

不是吧,用XML可以的。


je回复的地址,你如何xml:
http://www.iteye.com/forums/39/topics/444789/posts/1126891/quote

我的意思s2的restful用annotation简单,比如
@Namespace("/forums/{forumId}/topics/{topicId}")
PostsController就很简单了。

0 请登录后投票
   发表时间:2009-08-12  
mysoko 写道
cats_tiger 写道
mysoko 写道
struts2实现restful就需要annotation

不是吧,用XML可以的。


je回复的地址,你如何xml:
http://www.iteye.com/forums/39/topics/444789/posts/1126891/quote

我的意思s2的restful用annotation简单,比如
@Namespace("/forums/{forumId}/topics/{topicId}")
PostsController就很简单了。


曾经对strut2的restful插件很感兴趣了一段时间,后来发现这不是真正意义上的REST,只不过URL有Rest的风格罢了。而且,对开发效率的提升没有什么帮助,所以后来就不用了。@Namespace("/forums/{forumId}/topics/{topicId}")比XML的namespace简单吗,没有看出来。XML的还可以复用,只要遵循COC的原则,一个配置文件可以匹配很多Action。
0 请登录后投票
   发表时间:2009-08-12  
呵呵,其实用annotation在某些方面还是很方便的,例如AOP切面编程,事务控制,权限管理等,在这一块,大家可以好好研究一下,这里就不举例子了。真正的高手应该是annotation+xml都要用,对整个系统的耦合程度了解了,合理应用,会大大提高便捷。
0 请登录后投票
   发表时间:2009-08-12  
annotations 一个被疯炒的东西。本身是个好东西,但是现在被炒过了。弄得现在要是没有用过annotations,就不好意思和人打招呼
0 请登录后投票
   发表时间:2009-08-12  
struts2 用annotations来声明action属于哪个package方便

声明action的result麻烦。

所以result还是用xml配,或者利用新特性中的convention的自动查找。
0 请登录后投票
   发表时间:2009-08-12  
cats_tiger 写道
haole 写道
问一个题外问题,在spring MVC annotations中,表示session的标注中,如果session过期如何处理,即使判断为null,也是报后台错,最好能够判断,给出合适的提示。

永远都不要用session吧。
关于SpringMVC,比较令人讨厌的是总离不开request之类的servlet对象,我们参考了struts2的做法,将request对象绑定在ThreadLocal中,接合springMVC的interceptor,可以很好的解决这个问题。至于Session,如果万不得已非要使用,那么就从request中获取吧。



谢谢,能够不用session当然很好,但是在一般管理软件中避开session比较困难吧?
0 请登录后投票
   发表时间:2009-08-12  
用annoation最大的缺点就是如果要更改配置需要重新编译Java类,而且配置与代码混为一谈。如果用xml就没有这种麻烦,所以至今我的建议还是尽可能的少用annoation。
7 请登录后投票
   发表时间:2009-08-12   最后修改:2009-08-12
freej 写道
用annoation最大的缺点就是如果要更改配置需要重新编译Java类,而且配置与代码混为一谈。如果用xml就没有这种麻烦,所以至今我的建议还是尽可能的少用annoation。

你所谓的“配置”有很多本来就不是配置,例如Hibernate的所谓配置信息,原本就是企业架构模式中的元数据映射所需要的信息,以前由于源代码没有annotation这类比较方便的存放这类信息的工具,其实就是java语言本身一些不方便的地方,但是才会建议和考虑把此类信息放在xml中,这类所谓的“配置文件”和真正的系统配置文件根本就是两码事。

不要拍脑袋认为当初这类框架的作者把这些信息放在xml中,是为了不需要编译java文件,你有见过很规范的线上项目,只修改或者只更新Hibernate(或Spring)的配置文件,而不更新其他任何东西的么?根本不可能的,这些xml不是类似于数据库连接的配置信息,要做上线的版本控制,这些xml不可能允许某个运维或支持的人单独修改的。

还有在一些动态语言的框架中,所谓的“配置文件”和源代码文件的区别是很模糊的,你能说他们也是配置代码混为一谈么?

原本就应该在代码里的,现在回到代码中,不是很好么?有IDE(JDT)的强大重构支持,编译期的检查,代码可读性提高,为什么要拒绝呢?(当然Struts2的那种不合理的使用annotation的除外)
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics