具有模板依赖关系的Spring配置

时间:2013-06-27 22:52:09

标签: java spring configuration dependency-injection

我有一个类TemplateObject,它有一个定义良好的依赖结构。该类具有一些唯一属性KindOfObject,并且每个唯一值都有一个单例实例。在这种情况下,有3个KindOfObject值,因此应该有3个TemplateObject的单例实例。 Dependency1Dependency2也是如此。

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的值驱动。其TemplateObjectKindOfObject的{​​{1}}将KIND_A KIND_ADependency1 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也可能有依赖关系。有没有办法简化这种弹簧配置?

0 个答案:

没有答案