我正在测试一组类,这些类最终将用于在 Spring 上下文中创建 bean。我正在使用 JUnit 进行测试。我想确保当在测试中以编程方式实例化这些类的实例时,可以正确调用生命周期方法和 @Required setter。我知道我可以通过普通的旧java代理来做到这一点,但我想知道Spring(或其他地方)是否存在可以帮助我的特定工具。
我想写一些类似的东西
X x = ???.newBeanInstance(X.class);
x.setFoo(foo);
x.setBar(bar);
x.$postConstruct();
...
x.$preDestroy();
x = null;
另一个不太理想的选项是仅创建上下文的 XML 并使用它来初始化实例。
最佳答案
如果您启动整个上下文,则可以使用 spring-test
包及其 @ContextConfiguration
。
如果你想手动处理事情,你就得靠自己了(几乎)。如果您有字段注入(inject),则可以使用ReflectionTestUtils来设置依赖项。但除此之外,您:
- 使用
new X()
实例化对象 - 调用设置者
- 调用初始化方法(你应该知道它是哪一个)
- 最后调用销毁方法
关于java - 以编程方式实例化具有 Spring 生命周期注释的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286893/