gpt4 book ai didi

java - Spring Autowiring 接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:22 25 4
gpt4 key购买 nike

我有一个接口(interface) IMenuItem

public interface IMenuItem {

String getIconClass();
void setIconClass(String iconClass);

String getLink();
void setLink(String link);

String getText();
void setText(String text);

}

然后我有这个接口(interface)的实现

@Component
@Scope("prototype")
public class MenuItem implements IMenuItem {

private String iconClass;
private String link;
private String text;

public MenuItem(String iconClass, String link, String text) {
this.iconClass = iconClass;
this.link = link;
this.text = text;
}

//setters and getters

}

有什么方法可以从一个配置类中创建 MenuItem 的多个实例,只使用 IMenuItem 接口(interface)?用@autowired 什么的?也可以通过指定构造函数的参数来 Autowiring 吗?

最佳答案

@Autowired 实际上非常适合这种情况。您可以 Autowiring 特定类(实现)或使用接口(interface)。

考虑这个例子:

public interface Item {
}

@Component("itemA")
public class ItemImplA implements Item {
}

@Component("itemB")
public class ItemImplB implements Item {
}

现在您可以根据 @Component 注释值选择对象的名称,从而选择将使用这些实现中的哪一个

像这样:

@Autowired
private Item itemA; // ItemA

@Autowired
private Item itemB // ItemB

对于多次创建相同的实例,您可以使用@Qualifier 注释来指定将使用哪个实现:

@Autowired
@Qualifier("itemA")
private Item item1;

如果您需要使用某些特定的构造函数参数来实例化项目,则必须为其指定一个 XML 配置文件。可以找到关于使用限定符和 Autowiring 的不错教程 HERE .

关于java - Spring Autowiring 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138830/

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