bean 作用域
bean有五种作用域,默认为单例:
Singleton(单例类型),容器启动时就实例化和初始化;Prototype(原型类型),容器启动时没有实例化,只有获取 bean 时才被创建,每次都新建一个实例;request(web 的 Spring AllicationContext 下),每个 HTTP 都有自己的 bean,当处理结束时销毁;session(web 的 Spring ApplicationContext 下),每个 HTTP session 都有自己的 bean;global session(web 的 Spring ApplicationContext 下)。
使用单例bean需要关注多线程安全,如果需要保存状态,要么使用 Prototype 类型,加上@scope("prototype");要么把需要的可变成员变量保存在 ThreadLocal中。