Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春豆没有被注射_Java_Spring_Dependency Injection - Fatal编程技术网

Java 春豆没有被注射

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

我是Spring的新手,我不完全了解如何设置bean注入

我有一门课:

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的要点是您不必创建实例,而是容器负责实例化和生命周期处理。