在一个非常大的遗留应用程序中,我有没有实现这些接口的接口和类.
接口是基于类生成的,因此签名是相同的(除了接口在顶部添加另一个异常)并且名称相似(因此很容易从接口名称中找到类名).
为了获得接口的实现,我们做了一堆处理和记录调用,但基本上使用@[email protected]委托给类.简化它看起来像这样:
// This will create a proxy and invoke handler that calls HelloWorld.doSomethingHelloWorldInterface i = MyProxyUtil.getInstance(HelloWorldInterface.class);i.doSomething();public interface HelloWorldInterface { public voID doSomething() throws Exception; }public class HelloWorld { public voID doSomething() { //something }}
是否有可能使用Spring注释处理,一般@autowire所有类型*接口的字段并且有春天使用MyProxyUtil.getInstance(* Interface.class)注入实现?
这样
@autowire HelloWorldInterface a;HelloWorldInterface b = MyProxyUtil.getInstance(HelloWorldInterface.class);@autowire AnotherInterface c;AnotherInterface d = MyProxyUtil.getInstance(AnotherInterface.class);a == bc == d
最佳答案是的,您需要实现autowireCandIDateResolver.例如:
public class ProxyautowiredCandIDateResolver extends SimpleautowireCandIDateResolver { @OverrIDe public Object getSuggestedValue(DependencyDescriptor descriptor) { String dependencyClassname = descriptor.getDependencyType().getSimplename(); if (dependencyClassname.endsWith("Interface")) { return MyProxyUtil.getInstance(descriptor.getDependencyType()); } return super.getSuggestedValue(descriptor); }}
您可以使用beanfactoryPostProcessor在应用程序上下文中配置它:
public class autowireCandIDateResolverConfigurer implements beanfactoryPostProcessor { private autowireCandIDateResolver autowireCandIDateResolver; public voID postProcessbeanfactory( Configurablelistablebeanfactory beanfactory) throws BeansException { Defaultlistablebeanfactory bf = (Defaultlistablebeanfactory) beanfactory; bf.setautowireCandIDateResolver(autowireCandIDateResolver); } public autowireCandIDateResolver getautowireCandIDateResolver() { return autowireCandIDateResolver; } public voID setautowireCandIDateResolver( autowireCandIDateResolver autowireCandIDateResolver) { this.autowireCandIDateResolver = autowireCandIDateResolver; }}
总结 以上是内存溢出为你收集整理的java – Spring:委托自定义代理包装器进行接口注入全部内容,希望文章能够帮你解决java – Spring:委托自定义代理包装器进行接口注入所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)