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

码农软件 · 软件分类 · Java开发工具 · 2019-11-06 11:28:23

软件介绍

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

本文地址:https://www.codercto.com/soft/d/18386.html

人人都在说谎

人人都在说谎

赛思·斯蒂芬斯--达维多维茨 / 胡晓姣、张晨、左润男 / 中信出版集团 / 2018-11 / 58

有多少人买了书真正看完了? 你朋友的酒量有他说的那么大吗? 父母是否暗自喜欢男孩儿多于女孩儿? 电影里暴力镜头增多会导致犯罪率升高吗? 种族歧视在现如今的美国还严重吗? 特朗普的胜利有征兆吗,什么促成他赢得了大选? …… 你知道问题的答案吗,直觉会怎样告诉你? 作者赛思·斯蒂芬斯--达维多维茨是一位前谷歌数据科学家和专栏作家。他的研究发现,世界充满了......一起来看看 《人人都在说谎》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具