自定义注解 + 策略模式 +工厂模式 实现接口业务抽象,削减 if判断
最近有个业务,需要一个报表捞取多个数据源汇总过去,而业务人员又需要临时存储,我就简单的做了个接口的抽象。根据业务的位置和类型进行动态路由找寻实现查询。
首先,加入自定义注解:

然后就是扫描包里的这个注解,根据路由传入context进行执行相应的实现。
配置扫描的包:

这里利用了一下guava的Reflectioons扫描,获取到所有带自定义注解的类对象,然后获取相应code的属性,比如这样:

定义一个查询接口:

所有的都去实现:

前提需要构建context实现:

这样其实是通过类反射获取对象属性,没有了spring的管理,所以当实现类需要调用@Autowired的时候会报null,这里我用了一下spring的application获取一下上下文对象:

所以获取对象就变成了这样:

这样就可以实现动态路由寻找多个实现,节省掉了很多判断,业务的横向拓展也更加随意,隔离性也有所增加。

浙公网安备 33010602011771号