使用autowire创建调用实例

时间:2015-11-27 23:33:44

标签: java spring

我必须创建一个具有自动装配元素的类的实例,以进行测试。

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

我怎样才能在代码中创建这个类的实例,并将参数连接到spring?

2 个答案:

答案 0 :(得分:0)

如果您使用SpringJUnit4ClassRunner读取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 Context配置。

答案 1 :(得分:-1)

您可以将它们作为属性自动装配,而不是将其他元素作为构造函数参数传递。然后Spring将注入对象。

public class MyClass extends SomeOtherClass {

    @Autowired
    private OtherClass1 one;

    @Autowired
    private OtherClass2 two

    public MyClass(){
        super(one, two)
    }
}

修改:根据http://www.mkyong.com/spring/spring-auto-wiring-beans-with-autowired-annotation/,将@Autowired添加到构造函数中也是有效的。

如果您想要自动装配MyClass,您必须使用@Component或类似的注释(例如@Service)对其进行注释。

@Component
public class MyClass extends SomeOtherClass

然后,您可以在其他类中使用它

public class ClassThatUsesMyClass {
    @Autowire
    private MyClass myClass;
}