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

时间:2019-09-24 18:50:37

标签: java spring-boot

我正在考虑@scope("prototype")范围,但我没有得到,因为我们已经有了new关键字。它们都在运行时创建对象的新实例。使用prototype有什么好处?重新分配比使用new更容易吗?使用new关键字创建新对象时,我做错什么了吗?

我试图了解它的优点。

我发现了这个问题,但没有解释newprototypeWhat is the difference between bean with scope prototype and new Object in singleton bean?

的优缺点

4 个答案:

答案 0 :(得分:1)

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

什么是四季豆?

  

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

春豆的优势?

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

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

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

4)如果您使用的是spring boot,则可以使用application.yml批注

application.properties@Value中的值注入spring bean中。

答案 1 :(得分:1)

很简单。在某些情况下,每个bean中可能需要单独的实例。这几乎等同于在需要时使用new进行创建,只是您可以将依赖项注入到您标记为原型的任何对象上。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

使用Spring的主要好处之一是,它无需直接通过new实例化对象,而是将对象创建为Spring组件/ bean并在Spring Application Context中注册-这导致了软件组件可通过注入相互组合在一起,从而使单元测试更加轻松,软件更加灵活。

spring原型作用域意味着每次在Spring应用程序上下文中需要和注册spring组件时,都会创建一个spring组件的新实例(由spring运行时/容器)。最终,Spring会创建一个对象,并将其像其他任何对象一样存储在堆上,但是Spring Container提供的抽象层在能够定义和“连接”软件组件方面比使用裸{{1 }}在其他对象中创建对象。