以下是spring中原型和请求范围的定义.
prototype将单个bean定义范围限定为任意数量的对象实例.
request将单个bean定义范围限定为单个HTTP请求的生命周期; 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的.仅在Web感知Spring ApplicationContext的上下文中有效.
根据我的理解在原型范围的情况下,一些池将由核心容器维护.它将从该池中提供bean实例.在请求范围的情况下,将为每个http请求提供新bean.如果理解中存在某些相关性,请纠正我?
如果以上语句为真,那么如果bean保持某种状态,则不应将范围定义为原型,而应将其定义为请求.正确?
小智 124
我在网上找到的最好的一个
每次在ApplicationContext上调用getBean时,Prototype都会创建一个全新的实例.而对于Request,只为HttpRequest创建了一个实例.因此,在单个HttpRequest中,我可以在Application上调用两次getBean,并且只会有一个bean实例化,而同一个bean在同一个HttpRequest中作用于Prototype将获得2个不同的实例.
HttpRequest范围
Mark mark1 = context.getBean("mark");
Mark mark2 = context.getBean("mark");
mark1 == mark2; //This will return true
Run Code Online (Sandbox Code Playgroud)
原型范围
Mark mark1 = context.getBean("mark");
Mark mark2 = context.getBean("mark");
mark1 == mark2; //This will return false
Run Code Online (Sandbox Code Playgroud)
希望能为你解决这个问题.
| 归档时间: |
|
| 查看次数: |
37790 次 |
| 最近记录: |