您现在的位置是:首页 >

个人优点和缺点 Spring VS. HiveMind 优点缺点大比拼

火烧 2023-03-20 07:44:38 1057
S ri g VS. HiveMi d 优点缺点大比拼   在如下方面HiveMi d优于S ri g:    * HiveMi d强制针对接口编程     * HiveMi d使用module概念来
个人优点和缺点 Spring VS. HiveMind 优点缺点大比拼

Spring VS. HiveMind 优点缺点大比拼  

  在如下方面HiveMind优于Spring:    * HiveMind强制针对接口编程     * HiveMind使用module概念来分组管理service 利于并行和迭代开发     * HiveMind使用的配置文件格式更清楚简明 特别是将接口和实现统一定义成 个service 而Spring可能要定义好几个bean元素     * 在增加或移去interceptor时 HiveMind只要修改 行配置文件 而Spring至少要修改两个bean元素     * 在定义interceptor时 HiveMind采用javassist类库 性能优于Spring采用的JDK proxy     在如下方面Spring优于HiveMind:    * Spring的AOP框架较为成熟 编写interceptor的难度较低     * Spring内建和Hibernate的集成 HiveMind尚未内建该集成     * Spring的transaction management支持各种transaction API 如JDBC JDO JTA等等     基于以上发现 建议在下一项目中采用HiveMind 因为已经自行开发了HiveMind和Hibernate的集成以及简单的transaction management代码 因而在下一项目中并不特别需要Spring的相应功能 不过 当前HiveMind是 rc 版 一旦发布 release版则应尽快升级     [Spring VS HiveMind]:    * Service Oriented?  Spring : Yes   HiveMind : Yes     * How to define a Service?  Spring :  Define a POJO (在Spring术语中称之为bean 但实际上是POJO )    配置文件 <bean id= exampleBean class= examples ExampleBean />  HiveMind:  Define an interface and core implementation POJO     配置文件 service point元素   Comments:  HiveMind强制针对接口编程 优于Spring     * 是否提供service的namespace?  Spring:  仅仅使用id属性来唯一识别service   支持多配置文件   HiveMind:  提供Module概念用于管理service namespace 类似于java中的package   支持多个配置文件   Comments:  HiveMind略优     * Service Lifecycle?  Spring:   Lifecycle models: Singleton Prototype   HiveMind:   Lifecycle models: Primitive Singleton Threaded Pooled   Comments   最常用的就是Singleton模型 虽然HiveMind模型多于Spring 但不构成优势     * Who manages service?  Spring: BeanFactory or ApplicationContext   HiveMind: Registry     * Dependency Injection?  Spring: yes type and type supported   HiveMind: yes type and type supported     * Service Depenency Injection?  Spring:  使用ref元素   <property name= beanOne ><ref bean= anotherExampleBean /></property>  HiveMind:  在配置文件中使用set service元素   <set service service id= anotherService />  Comments:  在更换实现时 HiveMind因强制针对接口编程而占有优势     * Intializing and finalizing methods?  Spring :  <bean id= exampleInitBean class= examples ExampleBean   init method= init()   destroy method= cleanup() />  />  HiveMind:  <construct class= initialize method= />  不支持finalizing method   Comments:  Spring略优     * How to configure AOP?  Spring:  <! Step : 定义核心实现 >  <bean id= personTarget class= mypany PersonImpl >  <property name= name ><value>Tony</value></property>  <property name= age ><value> </value></property>  </bean>  <! Step : 定义Interpreter >  <bean id= myAdvisor class= mypany MyAdvisor >  <property name= someProperty ><value>Custom string property value</val></property>  </bean>  <bean id= debugInterceptor class= springframework aop interceptor Nop    Interceptor >  </bean>  <! Step : 定义接口 >  <bean id= person   class= springframework aop framework ProxyFactoryBean   >  <property name= proxyInterfaces ><value> mypany Person</value></    property>  <property name= target ><ref local= personTarget /></property>  <! Step : 声明引用 interpreter >  <property name= interceptorNames >  <list>  <value>myAdvisor</value>  <value>debugInterceptor</value>  </list>  </property>  </bean>    HiveMind:  <! 定义接口 >  <service point id= Adder interface= slhynju doconline business Adder >  <! 构造核心实现 >  <invoke factory>  <construct class= slhynju doconline business AdderImpl >  <set service property= sessionSource service id= SessionSource />  </construct>  </invoke factory>  <! 声明引用 interpreter >  <interceptor service id= hivemind LoggingInterceptor />  <interceptor service id= TransactionInterceptor />  </service point>  Comments:  Spring将接口和核心实现分开定义成两个bean HiveMind则统一定义成一个service     这点上HiveMind优于Spring     Spring的AOP框架较为成熟 HiveMin的Interpreter factory仍需要降低编写难度     HiveMind采用javassist 性能上优于Spring采用JDK proxy     * How to configure declarative transaction management?    Spring: 采用AOP     <bean id= petStoreTarget class= springframework samples jpetstore dom    ain logic PetStoreImpl >  <property name= accountDao ><ref bean= accountDao /></property>  <! Other dependencies omitted >  </bean>    <bean id= petStore   class= springframework transaction interceptor TransactionProxyFac    toryBean >  <property name= transactionManager ><ref bean= transactionManager /></    property>  <property name= target ><ref local= petStoreTarget /></property>  <property name= transactionAttributes >  <props>  <prop key= insert* >PROPAGATION_REQUIRED</prop>  <prop key= update* >PROPAGATION_REQUIRED</prop>  <prop key= * >PROPAGATION_REQUIRED readOnly</prop>  </props>  </property>  </bean>    HiveMind: 没有内建支持 我自行开发了一个TransactionInterceptor  <interceptor service id= TransactionInterceptor >  <include method= add* />  </interceptor>    Comments:  在Spring中如果需要混合使用TransactionInterceptor和其他Interceptor 需要定义多个bean 增大了维护成本   Spring支持JTA等各种Transaction manager   HiveMind配置文件更加清楚简明 但不没有提供JTA集成很致命    lishixinzhi/Article/program/Java/ky/201311/27989  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码