我有一个类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
的值驱动。其TemplateObject
为KindOfObject
的{{1}}将KIND_A
KIND_A
,Dependency1
KIND_A
等。这使得相应的Spring配置详细,特别是当唯一值和依赖项的数量很大时。
Dependency2
有一些方法可以重新组织这些类来避免这个问题,但是现在,让我们假设这是不可能的。我们还应该假设@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
也可能有依赖关系。有没有办法简化这种弹簧配置?