[英]Autowired in JUnit: only binds fields in Test class, not in other classes
我有以下测试课程:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/**/context.xml")
public class HAD_Test extends TestCase {
@Autowired
private UgcService ugcService;
@Test
public void test() {
// this binding works fine
Ugc ugc = ugcService.getRegistro(138355);
...
HAD_Data dData = new HAD_Data(ugc);
data.init();
...
}
}
然后我有另一堂课:
public class HAD_Data {
@Autowired
private ClimaService climaService;
public void init() {
...
// at this point, climaService is null
climaService.getRegistro(556)
...
}
}
我遇到的问题是Test类中的绑定被完美地应用了,但是在我使用的任何类中(例如HAD_Data),如果存在其他自动连接的字段,这些字段都不会被绑定。 它们始终为空值。
我真的不知道为什么未分配这些绑定。 有人可以帮我吗? 如果有任何其他信息是必要的,我可以包括在内,但是我认为我的context.xml是正确的,因为存在一些应用的绑定可以。
谢谢,马克
如果您是创建对象的人,您如何期望Spring注入字段?
HAD_Data dData = new HAD_Data(ugc);
Spring只能自动连线托管的bean。
在context.xml
为HAD_Data
添加一个bean声明并使用它。 您还可以在init()
方法上使用@PostConstruct
,以便Spring初始化后负责对其进行调用。
另外,请注意,Java约定不鼓励在类名中使用_
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.