1

TemplateObject明確に定義された依存構造を持つクラスがあります。クラスにはいくつかの一意の属性KindOfObjectがあり、一意の値ごとにシングルトン インスタンスがあります。この場合KindOfObject、値が 3 つあるため、 のシングルトン インスタンスが 3 つあるはずですTemplateObjectDependency1とについても同様です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。そのTemplateObjectKindOfObjectKIND_AKIND_A Dependency1KIND_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