java - Spring 自动接线

标签 java spring dependency-injection

假设我有两个类 Circle 和 Rectangle,它们实现了一个名为 Shape 的接口(interface)。
我有以下类(class):

public class ObjectFactory {
    @Autowired
    @Qualifier("circle")
    Shape shape;
.......
.......
.......
}

我想做的是删除@Qualifier 并使 Autowiring 取决于某些条件(例如,如果条件为真,则注入(inject)圆,如果条件为假,则注入(inject)矩形)或使布线取决于命名约定。
有没有办法做到这一点 ?

让我解释一下,如果我删除@Qualifier 注释,我将以以下异常结束

org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [com.app.objects.Shape] is defined: 
expected single matching bean but found 2: [circle, rectangle]

有没有办法以编程方式处理该异常,以便具有条件相关的 Autowiring ?

最佳答案

您可以使用 SpEL@Resource 中,也许您也可以在 @Qualifier 中使用它。

但通常这样的逻辑可以放在 FactoryBean 中,您可以在其中决定返回哪个实例。

关于java - Spring 自动接线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421607/

相关文章:

java - 修订比较的设计模式

java - Spring Batch XML 项目读取

java - Spring 3 - 将 @RequestParam 值发送回 View 的标准方法是什么?

java - 在 Spring Batch 中将参数从父作业传递给 StepJob?

nhibernate - 我的 POCO 类是否应该与存储库通信,如果是,该怎么做?

java - 带 Spring 的 MongoDb 工厂

c# - 如何使用标准 MVC Core 依赖注入(inject)解决未注册的类型

java - eclipse 没有对 CTRL + Space 提供任何帮助

java - 在 imageview 中显示来自 firebase 数据库的图像

java - Spring Boot 使用 application.yml 记录到 Windows PC 中的文件