Java 春豆没有被注射
我是Spring的新手,我不完全了解如何设置bean注入 我有一门课:Java 春豆没有被注射,java,spring,dependency-injection,Java,Spring,Dependency Injection,我是Spring的新手,我不完全了解如何设置bean注入 我有一门课: public class AClass { @Autowired private Class1 class1; @Autowired private Class2 class2; @Autowired private Class3 class3; public setClass1(Class1 class1) { this.class1 = clas
public class AClass {
@Autowired
private Class1 class1;
@Autowired
private Class2 class2;
@Autowired
private Class3 class3;
public setClass1(Class1 class1) {
this.class1 = class1;
}
public setClass2(Class2 class2) {
this.class1 = class1;
}
public setClass3(Class3 class3) {
this.class1 = class1;
}
public void doAThing() {
class1.doSomething();
class2.doSomething();
class3.doSomething();
}
}
我对这门课有个测试:
public class AClassTest {
@Test
public void test() {
AClass obj = new AClass();
obj.doAThing();
}
}
创建AClass
实例后,不会设置任何@Autowired
实例。很明显,我对Spring做了一些错误的事情,我想知道需要做些什么才能让它正常工作
(顺便说一句,我正在使用一个代码库,其中Spring配置是在后台设置的,因此我不需要像为我所做的那样初始化任何配置)
以下是我的beans xml文件:
…为其他类工作的其他bean。。。
您正在手动创建bean。这就是为什么春天不会注入豆子
相反,通过将@RunWith(SpringJUnit4ClassRunner.class)
添加到测试中,使用SpringJUnit4ClassRunner
类执行测试,并使用@ContextConfiguration
发出配置信号。另外,将bean注入单元测试。您的测试应该如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/package/where/your/xml/config/files/are/located/spring-config.xml"
})
public class FooTest {
//now Spring handles its creation and bean injection
@Autowired
AClass aClass;
public void foo() {
aClass.doAThing();
//further code for your test...
}
}
因此,您不能创建带有
@Autowired
字段的类实例,并让它们由Spring自动注入?此外,对于SpringJUint4ClassRunner
,是否为每个测试提供了一个新bean?我不希望将同一个实例用于多个测试是的,DI的要点是您不必创建实例,而是容器负责实例化和生命周期处理。