为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们在 Spring Boot 中需要原型作用域

为什么我们在 Spring Boot 中需要原型作用域

米琪卡哇伊 2023-08-23 17:11:13
我正在考虑@scope("prototype")范围,但我不明白,因为我们已经有了关键字new。它们都在运行时创建对象的新实例。使用有什么好处prototype?重新分配比使用更容易吗new?当我使用关键字创建新对象时,我做错了什么吗new?我正在尝试了解它的优点。new我发现了这个问题,但它没有解释和的优点/缺点prototype:What is the Difference Between bean with scope prototype and new Object in singleton bean?
查看完整描述

4 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

通过使用new关键字,您正在创建一个 java 对象,但它不是 spring bean,并且不会出现在 spring 容器中。但是,如果您@scope("prototype")为每个请求使用一个新的 spring bean,则会提供一个新的 spring bean。

什么是春豆?

Spring bean 基本上是由 Spring 管理的对象。更具体地说,它是一个由 Spring 框架容器实例化、配置和管理的对象。Spring bean 在 Spring 配置文件中定义(或者最近通过使用注释),由 Spring 容器实例化,然后注入到您的应用程序中。

春豆的优点?

1)默认情况下,所有spring bean都是不可变的,spring IOC容器将管理它们

2)通过使用依赖注入,您可以轻松地将bean注入到任何其他对象中

3)依赖注入使测试更容易。注入可以通过构造函数完成。

4)如果您使用的是Spring Boot ,那么您可以使用注释将值从 Spring bean 注入application.yml或注入到 Spring bean 中application.properties@Value


查看完整回答
反对 回复 2023-08-23
?
哔哔one

TA贡献1854条经验 获得超8个赞

其简单明了。在某些情况下,您可能需要每个 bean 都有单独的实例。它几乎等于new在需要时使用 with 创建,但您可以将依赖项注入到标记为原型的任何内容中。



查看完整回答
反对 回复 2023-08-23
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

例如,您有一个令牌,您应该一次性使用,因此每次新实例创建到应用程序上下文时,您都可以使用此类型。



查看完整回答
反对 回复 2023-08-23
?
千万里不及你

TA贡献1784条经验 获得超9个赞

使用 Spring 的主要好处之一是它不需要直接通过 实例化对象new,而是将对象创建为 Spring 组件/bean 并在 Spring 应用程序上下文中注册 - 这导致可以组合在一起的软件组件通过注入相互结合,并导致更容易的单元测试和更灵活的软件。

spring 原型范围意味着每次需要时都会创建一个 spring 组件的新实例(由 spring 运行时/容器)并在 spring 应用程序上下文中注册。最终 Spring 创建一个对象,它像任何其他对象一样存储在堆上,但是 Spring 容器提供的抽象层能够定义软件组件并将其“连接”在一起,比使用裸露创建对象具有深远的new优势其他物体内部。



查看完整回答
反对 回复 2023-08-23
  • 4 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信