Spring 中 Bean 的作用域(必背)
Bean 的作用域,這裏的作用域並不是程序代碼中,變量的作用範圍,而是指對象的創建的模式。Spring 5 之後有如下幾個方式:
singleton (default)
指的是一個 Spring 容器中僅有一個實例,即改 Bean 是單例存在的。是 Spring 中的默認方式
prototype
和 singleton 想反,每次從容器獲取對象,都是獲得一個新的實例。
request
這個作用域只有在 web 項目中有效,指的是同一個 http 請求中,獲取容器中的實例都是單例的。
session
同樣的,只在 web 項目中有效,在每一次 session 的生命週期中,獲取的容器中的實例都是單例的。
application
只在 web 項目中有效,在每一次 Servlet 上下文的生命週期中,獲取的容器中的實例都是單例的。
websocket
只在 web 項目中有效,在每一次 WebSocket 的生命週期中,獲取的容器中的實例都是單例的。
對於某個對象,指定作用域,可以使用 Scope 註解,如下:
Java
@Component @Scope("prototype") public class BeanClass { }
1234 | @Component@Scope("prototype")public class BeanClass {} |
---|