当前位置: 首页 > 知识库问答 >
问题:

Spring原型bean和Spring的好处

司易安
2023-03-14

这让我想到,我有真正的用例,我想使用原型bean,例如,我需要每个请求一个“新”bean实例。然而,根据我对这个片段的理解(来自Spring3文档),Spring保留了一个对需要清理的bean的引用(引用本身意味着bean不会被垃圾回收器自动清除)。此外,我从中得出结论,必须手动清理原型bean所持有的资源。

有人能告诉我这是不是正确的吗?如果是这样,是否有一个典型的模式来处理这个问题?如果您能回答Spring以这种方式实现原型bean的架构原因,我将不胜感激。

共有1个答案

闻人德庸
2023-03-14

Spring保留了对需要清理的bean的引用(引用本身意味着bean不会被垃圾回收器自动清除)。

是的,但是容器不包含对原型范围bean的引用。这就是为什么不调用破坏回调的原因:Spring创建bean实例,连接它并调用构造回调。它给出了一个实例,并忘记了那个bean。

您可以安全地为每个请求创建原型范围的bean。Spring将为您提供一个实例,当您没有任何对该bean的引用时(Spring没有保留一个!),它将被垃圾回收。但是由于Spring在创建bean之后对它一无所知--它不能调用任何破坏回调。事实上,这归结为一个问题:为什么Java没有析构函数。

 类似资料:
  • 问题内容: 我试图将一个bean 注入一个bean中,以便对单例bean方法的每个新调用都具有原型bean的新实例。 考虑如下的单例豆: 我希望每次调用该方法时,都会使用一个新实例。 下面是原型bean: 似乎正在发生的事情是,Spring急于在该方法中交付PrototypeBean的新实例。也就是说,该方法中的两行代码将在每一行中创建一个prototypeBean的新实例。 因此,在第二行中,输

  • Spring具有bean类型/作用域,如 -singleton bean(每个应用程序上下文只有一个bean), -prototype bean(每个请求一个新bean) 现在,如果在单例bean中有对原型bean的引用,是否有办法在对单例bean的每个请求中获得一个新的原型bean(在单例bean中)。< br >如果是,配置会是什么样的?

  • 我使用Spring AOP在我们的应用程序中触发指标。我已经创建了一个注释,其中有一个与之关联的建议。除了在原型bean上调用方法的情况之外,所有标记为的方法都可以很好地调用该建议。 注释具有 PointCut表达式: 原型bean创建 DummyService有一个方法,叫做Dummymethod(String DummyString) 当是从其他服务调用的,不调用建议。 配置类 单例注册类 对

  • 通常在Spring上下文中,如果原型bean被注入到单例bean中,父类的属性将重写原型bean作用域。但是,如果在原型bean作用域中注入一个单例作用域bean会发生什么。仍然使用内部bean的get bean会返回内部bean的新实例吗?

  • 问题内容: 只需要一些由社区评估的东西。以下是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中将bean注册为原型并返回实例。这是我第一次在运行时配置bean。您能否评价并提供反馈?先感谢您。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建新的同步管理器,请执行以下操作: 我正在使用Spring 3.1。请查看并提供您宝贵的反馈意见。 亲切的问候。 问题答案: 这纯

  • 我想将一个原型作用域bean注入到一个单例中。这个原型bean应该只为它被注入的每个单例创建一次(据我所知,默认情况下是这样的)。但是,我确实希望每次都有一个稍微不同的bean,所以我希望能够用一个自定义注释来注释注入点,这是在构造原型bean时使用的。 问题是,我如何找出注入点上有哪些注解?