当前位置:  开发笔记 > 编程语言 > 正文

基于方法参数的自动装配

如何解决《基于方法参数的自动装配》经验,为你挑选了1个好方法。

我有各种协议,我的系统正在使用.我标记了一个接口并提供了适当的实现.例如SSHprotocol,HttpProtocol两个工具Protocol.我将来可能会添加多个.现在我有一个课程如下: -

class Test {
  @Autowired
  private Protocol protocol;

  public void getProtocol(String name) {
    return protocol;
  }
}

getProtocol应返回一个Protocol基于对象Protocol的名字.总之,我希望Spring根据name参数自动装配特定的bean.春天是否支持这个?我可以有多个@Autowired相应的限定符.但这可能会让我用相应的自动装配注释编写10-15个变量.但这太多的代码使得难以管理.工厂可能是一个替代方案,但如何解决我的问题?



1> dunni..:

您可以自动装配地图类型的字段,如下所示:

@Autowired
private Map protocols;

然后Spring将使用bean名称作为键并将bean实例作为值填充映射.所以在你的getProtocol方法中你可以做到

public void getProtocol(String name) {
    return protocols.get(name);
}

您可以通过在组件注释上指定值来调整Bean的bean名称:

@Component("http")
public class HttpProtocol ...

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有