我有以下测试类:
@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是正确的,因为存在一些应用的绑定确定。
谢谢, 马克
答案 0 :(得分:1)
如果您是创建对象的人,您如何期望Spring注入该字段?
HAD_Data dData = new HAD_Data(ugc);
Spring只能自动装配托管bean。
在context.xml
HAD_Data
中为@PostConstruct
添加一个bean声明并使用它。您还可以在init()
方法上使用_
,以便Spring在初始化后负责调用它。
另请注意,Java约定不鼓励在类名中使用{{1}}。