1

我有一个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。ATemplateObjectKindOfObjectisKIND_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 配置?

4

0 回答 0