我有一个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
其KindOfObject
isKIND_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 配置?