Java 具有模板依赖关系的Spring配置
我有一个类Java 具有模板依赖关系的Spring配置,java,spring,configuration,dependency-injection,Java,Spring,Configuration,Dependency Injection,我有一个类TemplateObject,它有一个定义良好的依赖结构。该类有一些惟一的属性,KindOfObject,每个惟一值都有一个单例实例。在这种情况下,有3个KindOfObject值,因此应该有3个TemplateObject的单例实例。这同样适用于Dependency1和Dependency2 enum KindOfObject { KIND_A, KIND_B, KIND_C; } class TemplateObject { private
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
的依赖项中的值由KindoObject
的值驱动。一个TemplateObject
的KindOfObject
是KIND\u A
的KIND\u A
Dependency1
和KIND\u A
等。这使得相应的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配置?想想Bean Factory方法。