我有一个相同父类S的bean依赖关系层次结构:
A - > B - > ç
其中Bean A包含bean B,bean B包含C,其代码结构如下:
A a = new A();
B b = new B();
C c = new C();
a.successor = b;
b.successor = c;
实施时我有
Configuration
我真的想在这里做的是在@Configuration
public class MyConfig {
@Bean
public A a {
return new A();
}
@Bean
public B b {
B b = new B();
A a; // somehow get the bean A here
a.successor = b;
}
@Bean
public C c {
C c = new C();
B b; // somehow get the bean b here
b.successor = c;
}
}
中设置所有直接上面的bean创建和依赖关系,而不是代码中的硬编码;类似的东西:
shlex
关于如何使用Spring启动依赖注入进行此操作的任何输入?
答案 0 :(得分:1)
您可以将所需的bean作为参数传递给提供者方法。
void accessFile(char *fn) {
struct vehicle *array;
int count = 0;
char line[100];
FILE *fp = fopen(fn, "r");
while(fgets(line, sizeof(line), fp) != 0) {
count++;
}
array = (struct vehicle *) malloc(count * sizeof(struct vehicle));
rewind(fp);
while(fgets(line, sizeof(line), fp) != 0) {
count++;
}
}
但是,只有在某个地方注入B时才会设置a.successor。我相信这不是你所期望的,并且需要颠倒建筑链:
@Bean
public A a() {
return new A();
}
@Bean
public B b(A a) {
B b = new B();
a.successor = b;
return b;
}
@Bean
public C c(B b) {
C c = new C();
b.successor = c;
return c;
}