gpt4 book ai didi

java - 何时使用 Spring 管理/实例化 bean

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:57 26 4
gpt4 key购买 nike

例如,如果我有一个 ContainingClass 和 DependencyClass(及其接口(interface)):

public class ContainingClass {
IDependencyClass d;
public ContainingClass(IDependencyClass d){
this.d = d;
}
}

它们已经足够解耦了。这时候,显然我们可以使用构造函数来将它们连接起来。为什么要在 spring 上下文中定义它们呢?

你们能谈谈使用spring容器来管理bean有什么好处吗?预先感谢您。

另外:如果我们过多地使用spring容器,我认为维护容器和重构代码会变得相当困难。不是吗?

最佳答案

容器通常用作负责实例化所有对象的顶级实体。它解决了您最终必须解决的问题,因为某些东西必须将所有对象一起更新并使您的应用程序栩栩如生。

在依赖注入(inject)框架出现之前,人们通过使用单独的 Factory 类来负责将对象连接在一起来解决这个问题。在较大的应用程序中,这导致了许多不必要的样板类,这些样板类除了在一组对象上调用“new”之外什么也不做。 Spring 允许您从根本上消除应用程序中的这种担忧。

对于非常小的应用程序,您可能不会感到构建应用程序的麻烦,并且使用 spring 容器可能有点过分了。但对于较大的应用程序,使用像 spring 这样的容器可以减少样板切割,并且可以更轻松地将应用程序的各个部分连接在一起以进行测试,而无需每次都将完整的应用程序上下文连接在一起。

此外,依赖项注入(inject)容器鼓励某种编码风格,这通常会导致系统更易于测试,即注入(inject)依赖项而不是在构造函数中更新它们。这使您可以轻松地用模拟对象替换数据库连接之类的东西。

对于您的具体问题,答案是您的应用程序中必须存在其他一些类,该类知道如何实例化 ContainingClass 以及在哪里查找 IDependencyClass 的实例。 Spring 可以为您完成此操作,或者您必须自己编写一个类来完成此操作。

关于java - 何时使用 Spring 管理/实例化 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542791/

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