`
leeon
  • 浏览: 42359 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

打造0配置文件的SSH框架-6

    博客分类:
  • java
阅读更多
    最后一块,struts,我是在struts2的基础上进行zero configuration的。其实,struts2本身也提供了zero configuration的功能,确切的说,这个功能xwork提供了一部分,struts2自己又做了一部分。Xwork提供了converter和validation部分的annotation配置,而struts2提供了请求流转控制的annotation的配置。

     看过xwork和struts的相关文档后,感觉converter和validation利用原有的配置还是非常方便的,只要在你需要转换或者校验的相关setter上配置上具体的转换annotation或者校验annotation以及相关的属性就可以了,清晰明确,对我们的程序侵入性也很低。但是struts2提供的对流转控制的annotation就比较差强人意:

        1 定义哪些类作为action来装载,是通过配置类路径,然后搜索该类路径下所有以Action为后缀的类。那么就意味着我定义的所有action类必须是Action后缀的,虽然定义这样的命名标准是无可厚非,但是这个标准应该是在项目中定的,框架层面他就给我定掉了不也是对我们项目的入侵吗。

[list=2]
    2 众说周知,action的namespace和name是组成访问url的重要元素。然而在用struts2的zero configuration时,作为action类的namespace被定为了他的包路径,这又是乱搞,好在还有一个namespace的annotation可以覆盖这个默认属性。但action的name就恶心了,是类名去除后缀action的剩下部分,好像还有一陀其他规则。不知道是不是struts2想开发人员少写几个配置节省一点工作量。
[/list]
[list=3]
    3 最恶心的,就是result只能定义在类的级别上。这意味着什么,意味着一个类里只能有一个叫execute的action方法,如果你要做一个简单对象的CRUD操作,那么你要写4-5个Action类,而不能将action的粒度定义到方法这个层次上。这一点是我最反对的,也是我产生自己做struts2 zero configuration的念头的直接原因。
[/list]
[list=4]
    4 还有,居然没有提供Interceptor和exception mapping的annotation配置。
[/list]
    陈述了其总总罪状,看看怎么来实现自己的struts zero configuration。
分享到:
评论
4 楼 leeon 2007-09-26  
中秋同乐,不过现在已经过了,

哈哈
3 楼 leeon 2007-09-26  
说起这个,我漏掉了,关键是没用过,所以没想起来

但怎么说呢@After @Before @BeforeResult
其实只是实现了对action方法的拦截,可以将代码注入
到action方法的前后,大部分比较个性化的拦截的需求
确实用这些annotation家调用一些代码就可以替代了

但这和xwork中的拦截器,我觉得还是不一样的
拦截器定义之后,是可以通过interceptor-ref进行引用,
比如strut2本身提供的拦截器token-session什么的,它们
不在default的interceptor stack中,想要在@After等
中来使用就比较困难



2 楼 allenBen 2007-09-25  
还有就是

中秋快乐
1 楼 allenBen 2007-09-25  
我觉得Struts2的Annotation我看了下的确不知道他就近想干什么,除了XWork以前都提供了的Validation 和Type Conversion 以外。有点不知所云的感觉。

但是LZ所说的:
    "4 还有,居然没有提供Interceptor和exception mapping的annotation配置。 好像不是很对吧。"

可能把几个Annotation忽略了吧:@After @Before @BeforeResult。这3个东西的用法和你写的@ActionInterceptor有很大不同。能否说一下关于这3个Annotation的用法以及他们的优缺点。

    多谢

相关推荐

Global site tag (gtag.js) - Google Analytics