最后一块,struts,我是在struts2的基础上进行zero configuration的。其实,struts2本身也提供了zero configuration的功能,确切的说,这个功能xwork提供了一部分,struts2自己又做了一部分。Xwork提供了converter和validation部分的annotation配置,而struts2提供了请求流转控制的annotation的配置。
看过xwork和struts的相关文档后,感觉converter和validation利用原有的配置还是非常方便的,只要在你需要转换或者校验的相关setter上配置上具体的转换annotation或者校验annotation以及相关的属性就可以了,清晰明确,对我们的程序侵入性也很低。但是struts2提供的对流转控制的annotation就比较差强人意:
[list=1]
1 定义哪些类作为action来装载,是通过配置类路径,然后搜索该类路径下所有以Action为后缀的类。那么就意味着我定义的所有action类必须是Action后缀的,虽然定义这样的命名标准是无可厚非,但是这个标准应该是在项目中定的,框架层面他就给我定掉了不也是对我们项目的入侵吗。
[/list]
[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。
看过xwork和struts的相关文档后,感觉converter和validation利用原有的配置还是非常方便的,只要在你需要转换或者校验的相关setter上配置上具体的转换annotation或者校验annotation以及相关的属性就可以了,清晰明确,对我们的程序侵入性也很低。但是struts2提供的对流转控制的annotation就比较差强人意:
[list=1]
1 定义哪些类作为action来装载,是通过配置类路径,然后搜索该类路径下所有以Action为后缀的类。那么就意味着我定义的所有action类必须是Action后缀的,虽然定义这样的命名标准是无可厚非,但是这个标准应该是在项目中定的,框架层面他就给我定掉了不也是对我们项目的入侵吗。
[/list]
[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。