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”字段。