1、介绍
singleton:单例模式,即每个 Spring 容器中只存在一个实例,所有请求都共享该实例。这是默认的作用域。
prototype:原型模式,每次请求时都会创建一个新的实例。
request:每次 HTTP 请求都会创建一个新的实例,该实例仅在当前 HTTP 请求中有效。
session:同一个 HTTP session 中共享一个实例,不同的 HTTP session 使用不同的实例。
global session:通常用于基于 portlet 的 Web 应用程序环境,只在全局 HTTP session 中共享一个实例。
2、在实际开发中,我们可以根据不同的场景来选择不同的 Bean 作用域。
对于资源密集型的对象,如数据库连接池等,使用 singleton 作用域可提高应用性能。
对于状态变化的对象,如购物车等,使用 session 作用域可保证用户在整个会话中使用同一个实例。
对于线程安全的对象,如工具类等,使用 prototype 作用域可避免多线程环境下的并发问题。
对于一些需要长时间保存的对象,如用户信息等,使用 global session 作用域可保证全局唯一性。
在实际运用中,我们可以通过在 Bean 的声明中设置 **@Scope** 注解来指定 Bean 的作用域,例如:
@Service @Scope("prototype") public class MyService { // ... }
还没有评论,来说两句吧...