Java 如何使用Spring有条件地创建bean?

Java 如何使用Spring有条件地创建bean?,java,spring,factory,spring-bean,Java,Spring,Factory,Spring Bean,我有这样的模式: public class Factory { public GenericBean get(ContextEnum context, OneTypeArgs args) { switch (context) { case OneContext: Action a = new OneAction(args); return new GenericBean(a); case Tw

我有这样的模式:

public class Factory {
    public GenericBean get(ContextEnum context, OneTypeArgs args) {
        switch (context) {
        case OneContext:
            Action a = new OneAction(args);
            return new GenericBean(a);
        case TwoContext:
            Action b = new SecondAction();
            return new GenericBean(b);
        default:
            throw new IllegalArgumentException();
        }
    }
}
如何避免使用switch语句并配置Spring,使其能够自行构造此类对象

我有两个问题,我不知道如何处理:

  • 动作构造依赖于上下文,以便能够找到正确的实现
  • 构造函数参数是动态的

  • 你查过了吗?我相信这对你的案例来说很方便。我看不出你的实现有什么问题。你觉得你的解决方案不合适,有什么具体原因吗?@RubensMariuzzo:在我的项目中添加/修改个人资料并不容易,我们必须遵循许多政治流程才能做到这一点。我不能在我的工厂里添加“仅仅是皮条客”的个人资料:)@Jeremy:这个例子非常简单,因为我试图用最小的数目来暴露我的问题。我有很多原因:我不喜欢“switch”语句,我不喜欢“new”关键字,我发现我的解决方案太单一。例如,如果我想模拟“OneAction”类进行测试,我不能。我想知道一种在这种情况下使用Spring的方法,因为我经常遇到这种问题。对不起,我的英语很差……那么所有的
    操作
    实现相同的接口或扩展相同的类?
    GenericBean
    是否总是收到一个
    Action
    ,但您总是返回一个
    GenericBean
    实例?