Spring Boot中的分层Bean依赖关系

时间:2018-02-09 21:48:21

标签: java spring spring-boot dependency-injection aop

我有一个相同父类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启动依赖注入进行此操作的任何输入?

1 个答案:

答案 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;
}