java - 为什么我们在 Spring Boot 中需要原型作用域
问题描述
我正在考虑@scope("prototype")
范围,但我不明白,因为我们已经有了new
关键字。它们都在运行时创建对象的新实例。使用有什么好处prototype
?重新分配比使用更容易new
吗?new
当我使用关键字创建新对象时,我做错了吗?
我试图了解它的优点。
我发现了这个问题,但它没有解释和的优点/缺点new
:prototype
具有范围原型的 bean 和单例 bean 中的新对象有什么区别?
解决方案
通过使用new
关键字,您正在创建一个 java 对象,但它不是 spring bean,不会出现在 spring 容器中。但是,如果您@scope("prototype")
对每个请求都使用一个新的 spring bean。了解更多信息
什么是春豆?
Spring bean 基本上是由 Spring 管理的对象。更具体地说,它是一个由 Spring Framework 容器实例化、配置和管理的对象。Spring bean 在 Spring 配置文件中定义(或者,最近,通过使用注解),由 Spring 容器实例化,然后注入到您的应用程序中。
春豆的优点?
1) 默认情况下,所有 spring bean 都是不可变的,spring IOC 容器将管理它们
2)通过使用依赖注入,您可以轻松地将bean注入任何其他对象
3)依赖注入使测试更容易。注入可以通过构造函数完成。
4)如果您使用的是spring boot ,那么您可以使用注释将值从spring bean中注入application.yml
或注入到spring bean中application.properties
@Value
推荐阅读
- flutter - 像图像一样颤动的文本字段设计
- search - Algolia:跨多个字段搜索和评分结果
- python - Python Django - 上传图片以在开发模式下在浏览器中查看
- error-handling - 仅在 rmarkdown 中运行 rchunk 时,stargazer 错误“无法更改 NULL 的长度”
- python - 我无法在我的 django HTML 模板中显示我的图像
- javascript - TypeScript 中的变量声明错误
- php - 使用引导产品卡表单显示数据库记录时出现问题
- validation - 一种优雅的获取结果的方式
基于 Result<_, E1> 和 Result ? - swift - RealityKit 在运行时更改 USDZ 漫反射材质
- rest-assured - 如何使用 Rest Assured 概念在控制台中显示 Json Array Response 正文