以前的问题:
我有一个像这样的对象依赖。 A - > B - > C.有多种C实现。因此,将有多个A实例,这样对于C = A实例的每个实现。 A只有1个实现。显然不是单身。例如,C = 5.
当前解决方案:
我需要一个依赖关系图来定义5个bean,每个bean都是A类。这是使用基于spring和xml的配置完成的。对于A,将有5个bean defs,对于每个C实现将有5个bean defs。每个A bean defs都将它们自己独特的C实现称为bean。
我使用的是SOLID OOP方法,平均每天写入大约50-150行的类。我首先使用关注点分离。然后,我使用依赖性反转关联这些类。这会创建一个对象关系,当然这是一个基于依赖关系的有向非循环图。
新问题:
我在spring XML配置之前已经映射了所有这些类型的对象依赖关系。它的效果还不错。一个缺点是XML冗长,似乎是重复的,当表示这种关系时,XML本身并不容易阅读。
我想探索仅使用配置的注释映射这些对象关系,但我还没有看到任何允许我设置依赖层次结构的示例或文档。
答案 0 :(得分:1)
使用@Qualifier
注释,可以按名称注入bean,因此可以这样:
@Configuration
public class ClassCConfig {
@Bean(name = "c1")
public C createrC1() {
returns new C();
}
@Bean(name = "c2")
public C createrC2() {
...
}
@Bean(name = "c3")
public C createrC3() {
...
}
....
然后在不同的A:
实例中注入软管@Configuration
public class ClassAConfig {
@Autowired
@Qualifier("c1")
private C c1;
@Autowired
@Qualifier("c2")
private C c2;
...
@Bean(name = "a1")
public A createA1() {
...
}
@Bean(name = "a2")
public A createA2() {
...
}
通过这种方式,可以仅使用Java(扫描)配置连接任何bean树。