Java 具有模板依赖关系的Spring配置

Java 具有模板依赖关系的Spring配置,java,spring,configuration,dependency-injection,Java,Spring,Configuration,Dependency Injection,我有一个类TemplateObject,它有一个定义良好的依赖结构。该类有一些惟一的属性,KindOfObject,每个惟一值都有一个单例实例。在这种情况下,有3个KindOfObject值,因此应该有3个TemplateObject的单例实例。这同样适用于Dependency1和Dependency2 enum KindOfObject { KIND_A, KIND_B, KIND_C; } class TemplateObject { private

我有一个类
TemplateObject
,它有一个定义良好的依赖结构。该类有一些惟一的属性,
KindOfObject
,每个惟一值都有一个单例实例。在这种情况下,有3个
KindOfObject
值,因此应该有3个
TemplateObject
的单例实例。这同样适用于
Dependency1
Dependency2

enum KindOfObject {

    KIND_A,
    KIND_B,
    KIND_C;

}

class TemplateObject {

    private KindOfObject kindOfObject;

    private Dependency1 dependency1;

    private Dependency2 dependency2;

    ...

}

class Dependency1 {

   private KindOfObject kindOfObject;

   ...
}

class Dependency2 {

   private KindOfObject kindOfObject;

   ...

}
要注入到
TemplateObject
的依赖项中的值由
KindoObject
的值驱动。一个
TemplateObject
KindOfObject
KIND\u A
KIND\u A
Dependency1
KIND\u A
等。这使得相应的Spring配置变得冗长,特别是当唯一值和依赖项的数量很大时

@Configuration
class ProjectConfiguration {

    @Bean
    public Dependency1 dependency1A() {
        return new Dependency1(KIND_A, ...);
    }

    @Bean
    public Dependency1 dependency1B() {
        return new Dependency1(KIND_B, ...);
    }

    ...

    @Bean
    public Dependency2 dependency2A() {
        return new Dependency2(KIND_A, ...);
    }

    @Bean
    public Dependency2 dependency2B() {
        return new Dependency1(KIND_B, ...);
    }

    ...

    @Bean
    public TemplateObject templateObjectA() {
        return new TemplateObject(KIND_A, dependency1A(), dependency2A(), ...);
    }

    @Bean
    public TemplateObject templateObjectB() {
        return new TemplateObject(KIND_B, dependency1B(), dependency2B(), ...);
    }

    ...
}

当然有一些方法可以重组这些类来避免这个问题,但是现在,让我们假设这是不可能的。我们还应该假设
Dependency1
Dependency2
也可能具有依赖性。有没有办法简化这种Spring配置?

想想Bean Factory方法。