Bean的作用域简理解就是:bean对象能够被使用、操作的范围;singleton与prototype用的较多。
singleton作用域
在每个Spring IoC容器中一个bean定义对应一个对象实例,在读取配置文件创建IoC容器的时候就会根据配置初始化singleton的Bean实例。该单例存在于spring容器内,容器创建即创建对象实例。(在配制文件里不需要指定,默认就是单例)
Prototype作用域
Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
用prototype标记的bean,只在有程序调用(获取)时bean时,才会去创建实例,与singleton不一样。
有状态:指的是有数据传入,防止每次的数据被覆盖。
request
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的SpringApplicationContext情形下有效。
session
在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global session
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的SpringApplicationContext情形下有效。