gpt4 book ai didi

Spring @Autowire 两个未在 ApplicationContext 中定义的同一类的 bean

转载 作者:行者123 更新时间:2023-12-01 10:01:27 24 4
gpt4 key购买 nike

我正在开发 Spring MVC 应用程序并遇到了问题。我是Spring的新手,如果我的工作有点笨拙,请见谅。基本上我有一个java类ContractList。在我的应用程序中,我需要这个类的两个不同对象(它们都必须是单例)

public class MyClass {
@Autowired
private ContractList contractList;

@Autowired
private ContractList correctContractList;

.. do something..
}

请注意,这两个 bean 都未在 ApplicationContext.xml 中定义。我只使用注释。因此,当我尝试访问它们时 - contractList 和 CorrectContractList 最终指向同一个对象。有没有办法以某种方式区分它们而无需在 ApplicationContext.xml 中明确定义它们?

最佳答案

您可以为 bean 提供限定符:

@Service("contractList")
public class DefaultContractList implements ContractList { ... }

@Service("correctContractList")
public class CorrectContractList implements ContractList { ... }

并像这样使用它们:
public class MyClass {

@Autowired
@Qualifier("contractList")
private ContractList contractList;

@Autowired
@Qualifier("correctContractList")
private ContractList correctContractList;
}

在 xml 配置中仍然使用 @Autowired这将是:
<beans>
<bean id="contractList" class="org.example.DefaultContractList" />
<bean id="correctContractList" class="org.example.CorrectContractList" />

<!-- The dependencies are autowired here with the @Qualifier annotation -->
<bean id="myClass" class="org.example.MyClass" />
</beans>

关于Spring @Autowire 两个未在 ApplicationContext 中定义的同一类的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15516769/

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