序列化的过程是将 Java 对象转成 byte 数组在网络中传输,反序列化会将 byte 数组转成 Java 对象。

序列化的选择需要考虑兼容性,性能等因素,HSF 的序列化方式支持 java、hessian2,默认是 hessian2。序列化方式的对比和配置(只在服务端配置 HSFApiProviderBean)如下表所示。

序列化方式 maven 依赖 配置 兼容性 性能
hessian2 <artifactId>hsf-io-serialize-hessian2</artifactId> setPreferSerializeType("hessian2")
java <artifactId>hsf-io-serialize-java</artifactId> setPreferSerializeType("java") 最好 一般

API 形式配置 HSF 服务

HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean();
hsfApiProviderBean.setPreferSerializeType("hessian2");

Spring 配置 HSF 服务

Spring 框架是在应用中广泛使用的组件,如果不想通过 API 的形式配置 HSF 服务,可以使用 Spring XML 的形式进行配置,上述例子中的 API 配置等同于如下 XML 配置。

<bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
    <!--[设置] 发布服务的接口 -->
    <property name="serviceInterface" value="com.alibaba.middleware.hsf.guide.api.service.OrderService"/>
    <!--[设置] 服务的实现对象 target 必须配置 [ref],为需要发布为 HSF 服务的 spring bean id-->
    <property name="target" ref="引用的 BeanId"/>
    <!--[设置] 服务的版本 -->
    <property name="serviceVersion" value="1.0.0"/>
    <!--[设置] 服务的归组 -->
    <property name="serviceGroup" value="HSF"/>
    <!--[设置] 服务的响应时间 -->
    <property name="clientTimeout" value="3000"/>
    <!--[设置]  服务传输业务对象时的序列化类型 -->
    <property name="preferSerializeType" value="hessian2"/>
</bean>