我是Spring的新手。我正在测试@Inject
注释。为此,我创建了一个逻辑:
import javax.inject.Inject;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
class A {
int a;
public A(int a) {
this.a = a;
}
}
class B {
A x;
public B(A x) {
this.x = x;
}
}
@Configuration
class config1 {
A a;
@Inject
public void setA(A a) {
this.a = a;
}
@Bean
public B getB() {
return new B(a);
}
}
@Configuration
class config2 {
@Bean
public A getA() {
return new A(4);
}
}
public class Testt {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(config1.class);
B oa = ctx.getBean(B.class);
System.out.println(oa.x.a);
}
}
但这失败了,并说错误:
Error creating bean with name 'config1': Injection of autowired dependencies failed;
请帮忙。我知道我做了一些微不足道的错误。
答案 0 :(得分:0)
您只使用一个类初始化了上下文:
new AnnotationConfigApplicationContext(config1.class)
你需要告诉Spring使用第二类。
您可以添加第二个类:
new AnnotationConfigApplicationContext(config1.class, config2.class)
或者在config1中添加导入。
@Import({config2.class})