|
该帖已经被评为良好帖
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-04-02
/**
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-04-02
零配置不是annotation的功劳,早在struts2还叫webwork2的年代,照样有零配置的方法可以使用。
偶一直认为把annotation当作配置来用是一点好处也没有的,偶在实际项目中见过Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...整整超过10行的annotation,偶只不过是想看看这个Model有什么field而已,这样把整个一大包乱七八糟的annotation都塞在一个文件里面,不是一个大倒退么? |
|
| 返回顶楼 | |
|
时间:2008-04-02
Readonly 写道 零配置不是annotation的功劳,早在struts2还叫webwork2的年代,照样有零配置的方法可以使用。
偶一直认为把annotation当作配置来用是一点好处也没有的,偶在实际项目中见过Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...整整超过10行的annotation,偶只不过是想看看这个Model有什么field而已,这样把整个一大包乱七八糟的annotation都塞在一个文件里面,不是一个大倒退么? struts2.0默认的零配置是用过coc和annotation来实现的,如果是struts2.0+codebehind的话,那么这个零配置就只是通过coc来实现的,但是我觉得result也用coc来实现太不直观了,所以我倾向用annotation来实现result的配置。 Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...如果这么多配置不放在annotation中还是需要放在配置文件中,那么一个model就需要很多配置文件了 |
|
| 返回顶楼 | |
|
时间:2008-04-02
ahuaxuan 写道 Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...如果这么多配置不放在annotation中还是需要放在配置文件中,那么一个model就需要很多配置文件了 偶的意见就是要分开多个配置文件,减少Line Of Code per File,减少维护成本,降低出错概率,分离关注点。 |
|
| 返回顶楼 | |
|
时间:2008-04-02
Readonly 写道 零配置不是annotation的功劳,早在struts2还叫webwork2的年代,照样有零配置的方法可以使用。
偶一直认为把annotation当作配置来用是一点好处也没有的,偶在实际项目中见过Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...整整超过10行的annotation,偶只不过是想看看这个Model有什么field而已,这样把整个一大包乱七八糟的annotation都塞在一个文件里面,不是一个大倒退么? annotation还是有很多方便的地方,struts2中数据验证我更喜欢annotation,action配置我还是用xml 也自定义了一些annotation,比如model的属性加@NotInCopy复制属性的时候过滤,@NotInJson生成json的时候过滤,action的方法加@Captcha表示需要验证Captcha,加@PostMethod表示这个方法只接收Post请求. |
|
| 返回顶楼 | |
|
时间:2008-04-02
我现在的原则是,能不用Annotation的地方尽量不用,能不用XML的地方尽量不用。两者皆可时,看哪个需要敲的字母少,扩展性更强。
某个Annotation受到欢迎的程度我觉得取决于两点,一个是Annotation是否足够简单,例如像Spring2.5中的@Service,@Autowired。另外一个,就是如果有相应的XML配置,是否能完成“弱智”过度。我这里所说的弱智过度其实就是指Annotation中的语义是否能够和XML中的属性语义保持一致,以至于那些原本从XML过度到Annotation的朋友可以很容易的就切换过来。这一点,Struts2的Annotation就做得比较好,但是Hibernate的Annotation就很不容易让人产生联想。 事实上,我个人很反对在一个Domain Model上加Annotation来完成类似持久化、搜索等语义。就像Readonly说的,一个Domain Model就是一个Domain Model,很多情况下,我需要在其中填充一些业务逻辑,或者甚至我只想看看有那些字段。加上了过多的Annotation,导致这个文件臃肿不堪,也搞不清楚它到底承担了多少责任。甚至还要因为某些Annotation增加很多不必要的工作量。比如,没事情在Domain Model里面加了一个额外的getter方法为了前台显示用,结果为了Hibernate还要搞个恶心的@Transit的annotaion。实在是不能让人接受。。 |
|
| 返回顶楼 | |
|
时间:2008-04-02
还有最烦什么零配置,难道Annotation就不是配置?
|
|
| 返回顶楼 | |
|
时间:2008-04-02
Readonly 写道 ahuaxuan 写道 Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...如果这么多配置不放在annotation中还是需要放在配置文件中,那么一个model就需要很多配置文件了 偶的意见就是要分开多个配置文件,减少Line Of Code per File,减少维护成本,降低出错概率,分离关注点。 强烈赞同对Domain Model分开配置文件进行关注点分离。 |
|
| 返回顶楼 | |
|
时间:2008-04-02
Readonly 写道 零配置不是annotation的功劳,早在struts2还叫webwork2的年代,照样有零配置的方法可以使用。
偶一直认为把annotation当作配置来用是一点好处也没有的,偶在实际项目中见过Model一个field上挂了O/R Mapping, Full Text Index, Validation, Security...整整超过10行的annotation,偶只不过是想看看这个Model有什么field而已,这样把整个一大包乱七八糟的annotation都塞在一个文件里面,不是一个大倒退么? 如果只算上mapping的, 还是比较简单的。这也是楼主说的不论搞什么技术,都不要太过火,方便了大家就是好的。 |
|
| 返回顶楼 | |
|
时间:2008-04-02
ahuaxuan 写道 struts2.0默认的零配置是用过coc和annotation来实现的,如果是struts2.0+codebehind的话,那么这个零配置就只是通过coc来实现的,但是我觉得result也用coc来实现太不直观了,所以我倾向用annotation来实现result的配置。 我倒是觉得Result用CoC才直观而简单,annotation太繁琐,没事情多加了一句代码。 codebehind或者smarturl的插件唯一的问题就是不支持多种Result,这个另我很郁闷,需要Redirect到一个Action,CoC就无能为力了。 我最近在构思一个利用ResultCode进行CoC的Struts-plugin,完成了我们可以交流一下。 |
|
| 返回顶楼 | |









