引用

也不是很清楚,但是在debug的时候,看到的是scope为singleton的会在启动服务器是实例化,而prototype是在请求的时候再实例化 


其实是这样的,如果一个bean是prototype的,并且这个bean要被注入到其它bean或者你通过getBean这样的方式获得这个bean的时候,spring容器会创建一个新的实例给你。 

singleton模式指的是对某个对象的完全共享,包括代码空间和数据空间,也就是说,singleton会让所有线程共享他的成员变量。prototype则不会这样。 

此外singleton的生命周期由容器来管理,但是prototype的生命周期得你自己管理。 

最后,有个小trick,singleton的bean引用一个prototype的bean时会出现问题,因为singleton只初始化一次,但prototype每请求一次都会有一个新的对象,但prototype类型的bean是singleton类型bean的一个属性,所以不可能有新prototpye的bean产生 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐