在一个非常大的遗留应用程序中,我有不实现这些接口的接口和类。
接口是基于类生成的,因此签名相同(除了接口在顶部添加了另一个异常)并且名称相似(因此很容易从接口名称中找到类名)。
为了获得接口的实现,我们进行了一系列处理和记录调用,但基本上用于java.lang.reflect.Proxy
委托给类。简化后看起来像这样:
// This will create a proxy and invoke handler that calls HelloWorld.doSomething
HelloWorldInterface i = MyProxyUtil.getInstance(HelloWorldInterface.class);
i.doSomething();
public interface HelloWorldInterface {
public void doSomething() throws Exception;
}
public class HelloWorld {
public void doSomething() {
//something
}
}
是否可以使用 Spring 注释处理来处理@Autowire
所有类型的字段*Interface
并使用 springMyProxyUtil.getInstance(*Interface.class)
来注入实现?
这样
@Autowire HelloWorldInterface a;
HelloWorldInterface b = MyProxyUtil.getInstance(HelloWorldInterface.class);
@Autowire AnotherInterface c;
AnotherInterface d = MyProxyUtil.getInstance(AnotherInterface.class);
a == b
c == d