Spring Bean 支持哪几种作用域?

Spring框架支持以下五种作用域:

  1. Singleton(单例):这是默认的作用域。在这个作用域中,Spring IoC 容器只会创建一个实例,每次请求都会返回同一个实例。这对于需要共享状态的对象非常有用。

  2. Prototype(原型):在这个作用域中,每次请求都会创建一个新的实例。这对于需要独立状态的对象非常有用。

  3. Request(请求):在这个作用域中,每个HTTP请求都会创建一个新的Bean。这个作用域仅在Web应用环境下有效。

  4. Session(会话):在这个作用域中,每个HTTP会话都会创建一个新的Bean。这个作用域也仅在Web应用环境下有效。

  5. Application(应用):在这个作用域中,Bean的生命周期与ServletContext的生命周期相同。也就是说,Bean的生命周期与整个Web应用的生命周期相同。

  6. WebSocket(WebSocket会话):在这个作用域中,每个WebSocket会话都会创建一个新的Bean。这个作用域也仅在Web应用环境下有效。

通过在@Bean注解或XML配置中指定作用域,可以控制Spring Bean的生命周期。例如,下面的代码将BookService的作用域设置为Prototype,这意味着每次注入BookService时,都会创建一个新的实例:

@Bean(scope = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public BookService bookService() {
    return new BookService();
}

发表评论

后才能评论