1. 前言
在公司工作中,读者可能会发现,如果开发的系统是公司自己架构的框架,那么就会用到很多自己封装的技术,这个时候对于开发人员来说,就不是用什么Spring、Struts2等外面流行的框架了,而是要去学习公司内部的框架。像笔者的公司,用的就是自己框架,有很多方法是封装好的方法,你只要调用就行了,而不需要你去寻问底层是怎么实现的。我想读者也可能遇到这样的情况。但不管怎样,只要你有技术水平,你就不怕遇到什么样的技术,流行的也好,公司自己封装的也好,凡正就是一套路,就那回事了。所以,今天笔者将讲讲反射机制在自己架构中如何使用。(源码在GitHub上:git@github.com:owenwilliam/Invoke.git)
2. 例子说明
有这样的需求,当第三方系统向我们系统发来请求时,我们需要第三方系统给出他们的ID号,而这个ID是属于第三方的,可能是他规格的位数(一般不会超过8位),所以我们开发需要将第三方给的ID转化为我们自己内部的ID,我们规定是18位,并且有“202”开始。看到这里,读者可能会觉得这个也太简单了。是的这个确实简单,不就是写两个类,一个类是第三方到达我们系统我们转化为我们需要的格式18位;再写一个类,用于将我们系统发到第三方的ID转化为第三方需要的格式;我们分别命名为:InternalConverter和ExternalConverter。
但是令笔者好奇的是,有些公司框架只要在 我们写好了这两个类之后,不需要再写其它方法了,而是将两类名加上包名放到数据库的一张表中,然后在WEB界面添加InternalConverter或ExternalConverter,要跟数据库中的添加的名字一样,这样就行了。这不是开玩笑吗?这样的话,它到底是怎么运行的,我们都不知道。哎!默默感到程序员的失败了。就像你买了张从北京去深圳的票,不需要你管路线怎么走,睡上一觉就到达了深圳,这样的旅途不好玩。所以笔者在业余时间就自己写了个程序,来探索其中的奥秘。
3. 创建InternalConverter和ExternalConverter
根据上面的说明,我们分别来创建两个类,分别代表InternalConverter和ExternalConverter。
1) InternalConverter
package com.owen.work.converter.impl;
/**
* 当外部的ID进入我们系统时,我们需要将值进行转换:
* 数值以“202”开始,总的18位,不足的在“202”和数值之间加“0”,凑成18位
* @autho