spring中bean作用域有哪些

fiy 其他 6

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Spring中,Bean的作用域决定了Spring容器中每个Bean实例的生命周期以及在容器中的可见范围。以下是Spring中常用的Bean作用域:

    1. Singleton(默认):单例模式,即每个Spring容器中只会存在一个Bean实例。无论通过容器获取多少次,始终返回同一个实例。

    2. Prototype:原型模式,每次从容器中获取Bean时都会创建一个新的实例。每次获取的实例都是不同的。

    3. Request:每个HTTP请求都会创建一个新的实例,该实例仅在当前请求内有效。不同的请求获取到的实例是不同的。

    4. Session:每个HTTP Session会话都会创建一个新的实例,该实例仅在特定的会话内有效。不同的会话获取到的实例是不同的。

    5. GlobalSession:全局Session作用域,一般用于基于portlet的web应用。每个Portlet应用的全局会话会创建一个新的实例,该实例仅在特定的全局会话内有效。不同的全局会话获取到的实例是不同的。

    6. Application:每个ServletContext上下文都会创建一个新的实例,该实例在整个应用程序中有效。不同的ServletContext获取到的实例是不同的。

    除了以上这些常用的作用域,Spring还提供了一些其他的作用域,如WebSocket、Step、Custom等,可以根据具体需求来选择合适的作用域。通过在Bean定义时指定作用域,可以灵活控制Bean的生命周期和可见范围,提高程序的性能和可维护性。每个作用域都有其独特的特点和适用场景,开发者根据具体需求选择合适的Bean作用域。

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

    在Spring框架中,Bean的作用域定义了bean对象的生命周期及其可见性。Spring提供了以下五种Bean的作用域:

    1. Singleton(默认):这是最常用的作用域,每个Spring应用程序上下文中只有一个bean的实例。无论何时请求该bean,Spring都将返回同一个实例。在Singleton作用域下,Bean对象会被缓存,因此多次请求同一个Bean都会返回同一个实例。

    2. Prototype:每当请求该bean时,Spring都会创建一个新的实例。在Prototype作用域下,Bean对象不会被缓存,每次请求都会创建一个新的实例。

    3. Request:每个HTTP请求都会创建一个新的bean实例。该作用域仅在Web应用程序的上下文中有效。在同一次HTTP请求中多次请求同一个bean时,Spring会返回同一个实例。

    4. Session:每个HTTP会话(Session)只创建一个bean实例。该作用域也仅在Web应用程序的上下文中有效。在同一个会话中多次请求同一个bean时,Spring都会返回同一个实例。

    5. Global Session:每个全局HTTP会话只创建一个bean实例。该作用域通常只在基于Portlet的Web应用程序上下文中有效。

    值得注意的是,只有在Web应用程序上下文中,Request、Session和Global Session作用域才可用。其他作用域在任何Spring应用程序上下文中都是有效的。

    使用不同的作用域可以满足不同的应用需求。Singleton适用于需要在整个应用程序中共享实例的场景,而Prototype适用于每次都需要新的实例的场景。Request和Session适用于Web应用程序中需要按请求或会话共享实例的场景。Global Session适用于基于Portlet的Web应用程序中需要在全局会话中共享实例的场景。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Spring框架中,bean的作用域定义了在应用程序中创建和管理bean实例的方式。Spring提供了以下作用域:

    1. Singleton:单例模式。在整个应用程序上下文中,只创建一个bean实例。所有对该bean的请求都将返回相同的实例。这是Spring默认的作用域。

    2. Prototype:原型模式。每次对bean的请求将创建一个新的实例。每个实例都具有不同的属性和状态。

    3. Session:会话模式。在一个HTTP会话中,每个用户都将拥有一个单独的bean实例。不同用户之间的会话将拥有不同的bean实例。

    4. Request:请求模式。在一次HTTP请求和响应中,每个bean实例将只被使用一次。如果同一个请求中多次引用了同一个bean,则每次引用都将返回相同的实例。

    5. Global Session:全局会话模式。在一个全局的HTTP会话中,每个用户都将拥有一个单独的bean实例。它与Session作用域类似,但是它只能在基于portlet的web应用程序中使用。

    6. Application:应用程序模式。在整个Web应用程序上下文中,只创建一个bean实例。与Singleton作用域相似,但不受Spring上下文的边界限制。

    7. WebSocket:WebSocket模式。在WebSocket连接期间,每个连接将拥有一个独立的bean实例。

    在Spring中,使用作用域注解来指定bean的作用域。例如,使用@Scope("prototype")注解将bean作用域设置为原型模式。

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

400-800-1024

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

分享本页
返回顶部