Ximplementation 基于Java注解的调用时路由框架开源项目

我要开发同款
匿名用户2017年09月07日
67阅读
开发技术Java
所属分类开发工具、Java开发工具
授权协议Apache-2.0

作品详情

Ximplementation是一个基于Java注解的调用时路由框架。

它包括两个核心注解:

   @Implementor   此注解标注于类,表明类是某个或者某些类的实现类,就像implements和extends关键字。

   @Implement   此注解标注于@Implementor类的方法,表明方法是实现方法,就像@Overriden注解。

示例

假设有一个接口类如下:

public interface Service{T plus(T a, T b);T minus(T a, T b);}

那么,你可以自由地编写它的实现类:

public class ServiceImplDefault implements Service{public T plus(T a, T b){...}public T minus(T a, T b){...}}public class ServiceImplPlusInteger implements Service{@Overridepublic Integer plus(Integer a, Integer b){...}@NotImplement@Overridepublic Integer minus(Integer a, Integer b){ throw new UnsupportedOperationException(); }}@Implementor(Service.class)public class ServiceImplMinusInteger{@Implementpublic Integer minus(Integer a, Integer b){...}}

注:ServiceImplMinusInteger并不是必须的。而且,你可以在同一个或者多个其他@Implementor实现类内为plus和/或minus编写多个实现方法。

之后,你可以通过如下方式获得Service的实例:

Implementation implementation = new ImplementationResolver().resolve(Service.class, ServiceImplDefault.class, ServiceImplPlusInteger.class, ServiceImplMinusInteger.class);ImplementorBeanFactory implementorBeanFactory = SimpleImplementorBeanFactory.valueOf(new ServiceImplDefault(), new ServiceImplPlusInteger(), new ServiceImplMinusInteger());Service service = new ProxyImplementeeBeanBuilder().build(implementation, implementorBeanFactory);

对于serivce.plus方法的调用,如果参数类型是Integer,将被路由至ServiceImplPlusInteger.plus方法,否则,将被路由至ServiceImplDefault.plus方法;对于serivce.minus方法的调用,如果参数类型是Integer,将被路由至ServiceImplMinusInteger.minus方法,否则,将被路由至ServiceImplDefault.minus方法。

扩展库

Ximplementation-spring是一个将ximplementation整合至Spring的库,使Spring能够支持多实例依赖注入和更多ximplementation特性。

点击此处查看详细ximplementation-spring介绍。

点击此处下载ximplementation-spring。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论