spring五大作用域有哪些

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架中有五种作用域,分别是singleton、prototype、request、session和application。

    1. singleton(单例作用域):Spring默认的作用域,单例模式,一个Bean对象在整个应用程序生命周期内只创建一次,所有的请求都共享同一个实例。

    2. prototype(原型作用域):每次请求时都创建一个新的Bean对象,每次请求都会生成一个新的实例,适用于每次请求需要一个独立的实例的情况。

    3. request(请求作用域):每次HTTP请求都会创建一个新的Bean对象,仅适用于Web应用程序中,每个HTTP请求都会生成一个新的实例,适用于每个请求需要一个独立的实例的情况。

    4. session(会话作用域):每个会话创建一个新的Bean对象,同一个会话内共享同一个实例,不同会话之间的实例是相互独立的。

    5. application(全局作用域):整个Web应用程序生命周期内只创建一个Bean对象,所有的请求共享同一个实例,适用于全局共享的情况。

    这些作用域可以通过在Spring配置文件中使用scope属性来设置,默认为singleton作用域。不同的作用域可以根据需求选择合适的作用域来管理Bean的生命周期和共享。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring 框架中的五种作用域是指在一个 Spring 容器中,可以设定的 Bean 的生命周期和可见性的范围。这五种作用域分别是:singleton、prototype、request、session 和 global session。

    1. Singleton(单例)作用域:
      Singleton 是默认的作用域,表示在整个应用程序中只存在一个实例。每次请求都会返回同一个实例。这在需要共享资源或数据的情况下非常有用,例如数据库连接池、数据缓存等。通常情况下,Singleton 是最常用的作用域。

    2. Prototype(原型)作用域:
      Prototype 作用域表示每次请求都会创建一个新的实例。这在需要频繁创建和销毁对象的情况下非常有用,例如线程池、会话管理等。每次请求都会返回一个新的实例,实例之间没有共享数据。

    3. Request(请求)作用域:
      Request 作用域表示在一次 HTTP 请求期间,每个请求都会创建一个新的实例。这在需要将数据传递给不同的请求之间共享的情况下非常有用。在同一个请求内,不同的组件可以共享同一个实例。

    4. Session(会话)作用域:
      Session 作用域表示在一个用户会话期间,每个会话只会创建一个实例。这在需要将数据在多个请求之间共享的情况下非常有用,例如购物车、用户登录信息等。在同一个会话内,不同的请求可以共享同一个实例。

    5. Global Session(全局会话)作用域:
      Global Session 作用域与 Session 作用域类似,不同之处在于 Global Session 是基于 Portlet Web 应用程序的会话模型。Global Session 作用域在 Spring MVC 中很少使用。

    这五种作用域可以根据实际业务需求进行选择和配置,用来控制对象实例的生命周期和可见性。根据不同的作用域,Spring 容器会在适当的时机创建、销毁和共享对象实例。同时,Spring 还支持自定义作用域,以满足特殊业务需求。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring框架中提供了五种作用域,分别是:

    1. singleton(单例模式):该作用域下,Spring容器中只存在一个bean实例,所有访问该bean的请求都会返回同一个实例。默认情况下,所有通过Spring容器创建的bean都是单例的。
    2. prototype(原型模式):每次从Spring容器中获取bean时,都会创建一个新的实例,即每次访问都返回一个不同的实例。每个请求都会创建一个新的bean实例。
    3. request(请求作用域):每个HTTP请求都会创建一个新的bean实例,该bean仅在当前HTTP请求内有效。不同的HTTP请求会得到不同的bean实例。
    4. session(会话作用域):每个HTTP会话都会创建一个新的bean实例,该bean仅在当前会话内有效。不同的会话会得到不同的bean实例。
    5. global-session(全局会话作用域):该作用域仅在基于portlet的web应用中有效,当使用portlet容器时,每个portlet应用都有一个全局会话作用域。在普通的servlet应用中,global-session作用域就等同于session作用域。

    这些作用域可以通过在Spring配置文件中使用作用域标记进行指定。例如,可以使用@Scope注解或者使用XML配置文件中的元素的scope属性来指定作用域。下面分别介绍每种作用域的具体使用方法及操作流程。

    1. singleton(单例模式):
      在Spring中,所有通过容器创建的bean默认都是单例模式的,即容器中只存在一个实例。
      使用方法:
      注解方式:使用@Scope("singleton")注解
      XML配置方式:

    2. prototype(原型模式):
      每次从容器中获取bean实例时,都会创建一个新的实例。
      使用方法:
      注解方式:使用@Scope("prototype")注解
      XML配置方式:

    3. request(请求作用域):
      每个HTTP请求都会创建一个新的bean实例。
      使用方法:
      注解方式:使用@Scope("request")注解
      XML配置方式:

    4. session(会话作用域):
      每个HTTP会话都会创建一个新的bean实例。
      使用方法:
      注解方式:使用@Scope("session")注解
      XML配置方式:

    5. global-session(全局会话作用域):
      在基于portlet的web应用中有效,每个portlet应用都有一个全局会话作用域。
      使用方法:
      注解方式:使用@Scope("globalSession")注解
      XML配置方式:

    需要注意的是,对于不同的作用域,bean的生命周期也会有所不同。例如,单例模式的bean会在容器启动时创建并一直存在于容器中,而原型模式的bean在每次获取时都会创建一个新的实例,不会共享状态。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部