1、Spring中的bean对象是什么?
在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为Bean。简单地讲,Bean就是由IoC容器初始化、装配及管理的对象,除此之外,Bean就与应用程序中的其他对象没有什么区别了。而Bean的定义以及Bean相互间的依赖关系将通过配置元数据来描述。
2、为什么Spring中bean需要不同的作用范围?
Spring中的Bean默认都是单例的,即在Spring容器中每个Bean对象只有一个实例。这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spring框架之后,每个Action都是单例的,那么对于Spring托管的单例Service Bean,如何保证其安全呢?
3、Spring中Bean的作用范围有哪些?
- singleton:单例模式,即在Spring的IoC容器中仅存在一个Bean实例,此为默认模式。
- prototype:原型模式,每次通过Spring容器获取prototype定义的bean时,容器都将创建一个新的Bean实例,每个Bean实例都有自己的属性和状态。
- request:在一次Http请求中,容器会返回该Bean的同一实例。而对不同的Http请求则会产生新的Bean,而且该bean仅在当前Http Request内有效。
- session:在一次Http Session中,容器会返回该Bean的同一实例。而对不同的Session请求则会创建新的实例,该bean实例仅在当前Session内有效。
- global Session:在一个全局的Http Session中,容器会返回该Bean的同一个实例,仅在使用portlet context时有效
原文
https://segmentfault.com/a/1190000022526704