Ximplementation基于Java注解的调用时路由框架

联合创作 · 2023-10-01 07:42

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


{
@Override
public Integer plus(Integer a, Integer b){...}

@NotImplement
@Override
public Integer minus(Integer a, Integer b){ throw new UnsupportedOperationException(); }
}

@Implementor(Service.class)
public class ServiceImplMinusInteger
{
@Implement
public 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

浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报