一. 在spring 中常用的作用域有单例模式(singleton),和多例模式(prototype)
1 singleton作用域
一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。
所有针对该bean的后续请求和引用都 将返回被缓存的对象实例。spring管理。
1->n
2 prototype作用域
每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的 getBean()方 法)都会产生一个新的bean实例,相当与一个new的操作。请求端管理。
1->1
3.request,session,global session作用域
request:表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。
session:表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。
golabl session:不用
总结:对于spring来说最常用的作用域是prototype,singleton.当在项目中不存在多线程共享对象或是不需要对象在单线程安全不受其他线程影响,我们可以选择singleton,这样可以节约内存,用法可以用在dao层,数据访问层,因为在dao层我们一般将并发下访问交给数据库连接池来管理,这样整个项目就、只需要一个连接池来管理,singleton更合适。而对于一些其它对象需要线程安全,也就是在线程中new对象,用singleton可能导致线程安全。或是生命周期很短的对象,我们可以选择prototype.