Spring框架中的六种Bean作用域简介

本文将介绍Spring框架中的六种Bean作用域。

除了单例和原型作用域之外,其他作用域都只能在Web项目中使用。

1. 单例(Singleton)

默认的Bean作用域。在整个应用程序中,每个Bean以单例模式存在。当Spring容器启动时,会创建且仅创建一个实例。所有对该Bean的请求都将返回同一个实例。

@Component
@Scope("singleton")
public class SingletonBean {
    
    
}

2. 原型(Prototype)

原型作用域下的Bean,每次请求都会创建一个新的实例。与单例作用域不同,原型作用域不会在容器启动时创建实例,而是在每次请求时创建。

@Component
@Scope("prototype")
public class PrototypeBean {
    
    
}

以下作用域仅在Web项目中可用:

3. 请求(Request)

对于每个HTTP请求,都会创建一个新的Bean实例。在请求处理完成后,实例将被销毁。

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class RequestBean {
    
    
}

4. 会话(Session)

在一个HTTP会话中,每个Bean都是单例的。在会话结束时,实例将被销毁。

@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class SessionBean {
    
    
}

5. 应用(Application)

在整个Web应用程序的生命周期内,每个Bean都是单例的。类似于单例作用域,但仅限于Web应用程序。

@Component
@Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class ApplicationBean {
    
    
}

6. WebSocket

在一个WebSocket会话中,每个Bean都是单例的。当会话结束时,实例将被销毁。

@Component
@Scope(value = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class WebSocketBean {
    
    
}

总结

了解Spring框架中的六种Bean作用域对于我们合理地使用依赖注入和管理对象生命周期至关重要。希望本文能为大家提供有价值的参考,更好地使用Spring框架进行Java开发。

猜你喜欢

转载自blog.csdn.net/kaka_buka/article/details/129989555