gpt4 book ai didi

java - 基于方法参数的 Autowiring

转载 作者:行者123 更新时间:2023-12-02 11:21:11 25 4
gpt4 key购买 nike

我的系统正在使用各种协议(protocol)。我标记一个接口(interface)并提供适当的实现。例如,SSHprotocolHttpProtocol 都实现了 Protocol。我将来可能会添加多个。现在我的类(class)如下:-

class Test {
@Autowired
private Protocol protocol;

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

getProtocol 应根据 Protocol 名称返回一个 Protocol 对象。简而言之,我希望 Spring 根据名称参数 Autowiring 特定的 bean。spring支持这个吗?我可以有多个带有相应限定符的 @Autowired 。但这可能会让我编写 10-15 个带有相应 Autowiring 注释的变量。但代码太多,难以管理。工厂可能是一个替代方案,但这将如何解决我的问题?

最佳答案

您可以 Autowiring map 类型的字段,如下所示:

@Autowired
private Map<String, Protocol> protocols;

Spring 将使用 bean 名称作为键、bean 实例作为值来填充映射。所以在你的 getProtocol 方法中你可以这样做

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

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

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

关于java - 基于方法参数的 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34219307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com