0

我有以下测试类:

@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 是正确的,因为存在一些应用正常的绑定。

谢谢,马克

4

1 回答 1

1

如果您是创建对象的人,您如何期望 Spring 注入该字段?

HAD_Data dData = new HAD_Data(ugc);

Spring 只能自动装配托管 bean。

context.xml在你的for中添加一个 bean 声明HAD_Data并使用它。您还可以使用@PostConstructoninit()方法,以便 Spring 在初始化后负责调用它。


另外,请注意 Java 约定不鼓励使用_in 类名。

于 2013-10-10T13:41:28.053 回答