我有一个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中的值由 的值驱动KindOfObject。ATemplateObject其KindOfObjectisKIND_A将具有KIND_A Dependency1, andKIND_A Dependency2等。这使得相应的 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 配置?