spring-异构系统的数据兼容转换

前言

        什么是异构系统呢?实际上就是存在着多种语言的系统,这样的系统尤其可能出现在初创公司在更换技术栈的时候。比如说早期的淘宝、天猫一开始使用的也是php语言,后来才逐渐的转到了java的温暖怀抱。
        那么实际上,本文想要讨论的就是java接口在被调用的时候如何实现数据命名的规范化处理。

背景

        现在的互联网公司很大一部分都采用restful格式的接口为前端提供数据,但是对于动态语言js来说,他们的命名是以下划线作为标准的,但我们在提供接口的时候并不希望去把我们接口的出入参,定义成那种样式,因此,需要动态的数据转换。

思路

        实际上,我们这里可以自己写一个适配器,然后采取泛型的方式将需要转换的对象传入,然后进行转换。但是,再造轮子前我们可以先看看有没有现成的解决方案。实际上,spring为我们提供了这样的解决方案。
        下面来一起看看,spring官网给出的定义:
        上面的内容无非就是告诉我们需要实现一个数据的适配器,就可以实现数据的转换。ok,先定义需要转换的类:

@Data
public class User_php {
    private String user_Name;
    private String user_Pass;
}
@Data
public class User implements Serializable {
    private String userName;
    private String userPass;
}

        然后就是实现我们需要的适配器,啊哈,


public class TaoBaoAdaptor implements Converter<User_php, User> {

    @Override
    public User convert(User_php source) {
        User user = new User();
        user.setUserName(source.getUser_Name());
        user.setUserPass(source.getUser_Pass());
        return user;
    }
}

最后,当然就是要将这个适配器注册到一个地方去,然后直接调用其中的convert方法即可,简直妙哉。

 <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.henry.TaoBaoAdaptor"/>
            </set>
        </property>
    </bean>

        然后在需要转换的地方,实例化这个service,调用方法即可!例子如下:

User user = conversionService.convert(userPhp, User.class);

        啊哈,上面的userPhp就是UserPhp的实例,现在我们就可以达到动态的转换的目的了!实在不能太棒!你传进去的类型,会自动在刚才的service中寻找,进行动态的变换。

总结

        异构系统的各种语言的兼容确实是一件比较复杂的问题,值得我们去不断的思考!当然,针对今天讨论的内容,我们也可以自己实现。以后有机会可以自己写写!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值