gpt4 book ai didi

spring - 如何使用spring来解决手动创建的对象的依赖关系?

转载 作者:行者123 更新时间:2023-12-04 18:54:01 25 4
gpt4 key购买 nike

我想知道是否可以使用 Spring 来解决在我的程序中手动创建的对象的依赖关系。看看下面的类:

public class TestClass {

private MyDependency md;

public TestClass() {
}

...

public void methodThaUsesMyDependency() {
...
md.someMethod();
...
}

}

这个TestClass不是spring bean,而是需要MyDependency,也就是spring bean。有什么方法可以通过 Spring 注入(inject)这种依赖关系,即使我在代码中使用 new 运算符实例化 TestClass ?

谢谢

最佳答案

编辑:我在下面的原始答案中描述的方法是在容器外部完成 DI 的一般方法。对于您的特定需求 - 测试 - 我同意 DJ 的回答。使用 Spring 的测试支持更为合适,例如:

@Test
@ContextConfiguration(locations = { "classpath*:**/applicationContext.xml" })
public class MyTest extends AbstractTestNGSpringContextTests {

@Resource
private MyDependency md;

@Test
public void myTest() {
...

虽然上面的示例是一个 TestNG 测试,但在 8.3.7.2. Context management and caching 中还解释了 Junit 支持。 .

一般方法:使用 注释您的类(class)@可配置并利用 AspectJ 加载时或编译时编织。见 6.8.1 in the Spring documentation on AOP更多细节。

然后你可以用 注释你的实例变量。 @资源 @Autowired .尽管它们实现了依赖注入(inject)的相同目标,但我建议使用 @资源 因为它是 Java 标准而不是 Spring 特定的。

最后,记得考虑使用 transient 关键字(或 @Transient 对于 JPA),如果您计划在将来序列化或持久化对象。您可能不想序列化对您的 DI 存储库、服务或组件 bean 的引用。

关于spring - 如何使用spring来解决手动创建的对象的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com