TemplateObject
明確に定義された依存構造を持つクラスがあります。クラスにはいくつかの一意の属性KindOfObject
があり、一意の値ごとにシングルトン インスタンスがあります。この場合KindOfObject
、値が 3 つあるため、 のシングルトン インスタンスが 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
。そのTemplateObject
にKindOfObject
はKIND_A
、KIND_A
Dependency1
、KIND_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 構成を簡素化する方法はありますか?