Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 使用autowire创建调用实例_Java_Spring - Fatal编程技术网

Java 使用autowire创建调用实例

Java 使用autowire创建调用实例,java,spring,Java,Spring,我必须为测试创建一个类的实例,该类具有自动连接的元素 public class MyClass extends SomeOtherClass { @Autowired public MyClass(OtherClass1 one, OtherClass2 two){ super(one, two) } } 如何在代码中创建这个类的实例,并通过spring连接参数?而不是将其他元素作为构造函数参数传入,而是将它们作为属性自动连接。然后Spring将注入对象

我必须为测试创建一个类的实例,该类具有自动连接的元素

public class MyClass extends SomeOtherClass {
    @Autowired
    public MyClass(OtherClass1 one, OtherClass2 two){
        super(one, two)
    }
}

如何在代码中创建这个类的实例,并通过spring连接参数?

而不是将其他元素作为构造函数参数传入,而是将它们作为属性自动连接。然后Spring将注入对象

public class MyClass extends SomeOtherClass {

    @Autowired
    private OtherClass1 one;

    @Autowired
    private OtherClass2 two

    public MyClass(){
        super(one, two)
    }
}
编辑:基于,将@Autowired添加到构造函数也是有效的

如果要自动连接MyClass,必须使用@Component或类似的注释(如@Service)对其进行注释

@Component
public class MyClass extends SomeOtherClass
然后,您可以在其他类中使用它

public class ClassThatUsesMyClass {
    @Autowire
    private MyClass myClass;
}

如果在要在测试中使用的Spring上下文中使用来读取,则可以使测试具有Spring感知能力。例如:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"the-config.xml"})
public final class MyClassTests {
    @Autowired   
    private MyClass testee;

    @Test
    public void testSomething() {
        assertThat(testee).doesSomethingExpected();
    }
}

请注意,您应该尽可能多地重用生产配置,而不是创建一个镜像它的并行Spring上下文配置。

很抱歉,我应该说,我无法通过在application-Context.xml中定义bean来更改类。不幸的是,我没有太多这样做的经验,但应该给你一个体面的参考如何开始。具体来说,请查看属性注释的“ref”字段。