gpt4 book ai didi

java - 我们可以有一个工厂类作为 spring bean 并有一个工厂方法根据条件返回多个 spring bean 吗?

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

我想根据工厂类中的条件返回多个spring bean。

这是一个好的做法吗?

有没有更好的方法来编写下面的代码?还有其他适合这里的设计模式吗?

下面是代码片段:

package com.test;

import org.springframework.stereotype.Component;
import javax.annotation.Resource;


@Component
public class InstanceFactory {

@Resource(name = "instance1")
private Instance instance1;

@Resource(name = "instance2")
private Instance instance2;

public Instance getService(Condition condition) {
if (condition.one() && condition.two()) {
return instance2;
} else {
return instance1;
}
}
}

最佳答案

这取决于你想达到什么目的。工厂模式旨在创建对象,但您返回的是已经在其他地方创建的对象(在本例中为 Spring)。如果你想创建将由 Spring 管理的 bean,有几种方法:

@Conditional(YourConditionImplementation.class):添加到 @Configuration 注释类的方法上的此注释将允许您在满足给定条件时创建一个 bean。此处示例:https://javapapers.com/spring/spring-conditional-annotation/

您也可以使用 BeanFactory 将 bean 的定义 (DefinitionBean) 注入(inject)到容器中。此处示例:https://www.logicbig.com/tutorials/spring-framework/spring-core/bean-definition.html

现在,如果您想要一个对象来确定哪个实例类型的对象更适合某些需要,那么您的方法就可以了,但从技术上讲它不是工厂:)

关于java - 我们可以有一个工厂类作为 spring bean 并有一个工厂方法根据条件返回多个 spring bean 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55633296/

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