您现在的位置是:首页
>
个人优点和缺点 Spring VS. HiveMind 优点缺点大比拼
S ri g VS. HiveMi d 优点缺点大比拼 在如下方面HiveMi d优于S ri g: * HiveMi d强制针对接口编程 * HiveMi d使用module概念来

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 很赞哦! (1057)