小编典典

spring自动接线接口

spring

我有一个接口IMenuItem

public interface IMenuItem {

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

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

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

}

然后我有一个接口实现

@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

}

有什么方法可以仅使用IMenuItem接口从配置类创建MenuItem的多个实例?与@autowired之类的?还可以通过指定构造函数的参数来自动装配吗?


阅读 219

收藏
2020-04-21

共1个答案

小编典典

@Autowired实际上适合这种情况。你可以自动连接特定的类(实现)或使用接口。

考虑以下示例:

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配置文件。在这里可以找到有关使用qulifiers和自动装配的不错的教程。

2020-04-21