在Spring框架中,支持的几种常见的Bean作用域有以下五种:

  1. Singleton(单例):

    • 在Spring中是默认的作用域,表示在整个应用程序中只有一个Bean实例。这个实例在容器启动时创建,之后一直存在于整个应用程序的生命周期中。所有对该Bean的请求都返回同一个实例。
    @Component
    public class MySingletonBean {
        // ...
    }
    
  2. Prototype(原型):

    • 每次请求都会创建一个新的Bean实例。每次调用getBean()方法或注入依赖时,都会返回一个新的Bean实例。
    @Component
    @Scope("prototype")
    public class MyPrototypeBean {
        // ...
    }
    
  3. Request(请求):

    • 仅在Web应用程序中有效,表示每个HTTP请求都会创建一个新的Bean实例。该Bean实例仅在当前HTTP请求范围内有效。
    @Component
    @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class MyRequestScopedBean {
        // ...
    }
    
  4. Session(会话):

    • 仅在Web应用程序中有效,表示每个HTTP会话都会创建一个新的Bean实例。该Bean实例在整个HTTP会话期间都有效。
    @Component
    @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class MySessionScopedBean {
        // ...
    }
    
  5. Application(应用程序):

    • 仅在Web应用程序中有效,表示在整个Web应用程序中只存在一个Bean实例。该Bean实例在整个Web应用程序的生命周期内都有效。
    @Component
    @Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class MyApplicationScopedBean {
        // ...
    }
    

这些作用域可以根据实际需求选择,用于控制Bean实例的生命周期和可见范围。在非Web环境中,通常使用Singleton和Prototype作用域。而在Web环境中,除了Singleton和Prototype,还可以使用Request、Session和Application作用域。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.