spring Bean的作用域 單例,多例

2021-08-29 04:07:35 字數 795 閱讀 1594

大部分:

單例模式的好處總結就是:節省記憶體,提高效率(只建立乙個物件,跟建立多個物件,誰效率高?)

1. 什麼是單例、多例:

所謂單例就是所有的請求都用乙個物件來處理,比如我們常用的service和dao層的物件通常都是單例的,而多例則指每個請求用乙個新的物件來處理,比如action;

2.為什麼用單例、多例:

之所以用單例,是因為沒必要每個請求都新建乙個物件,這樣子既浪費cpu又浪費記憶體;

之所以用多例,是為了防止併發問題;即乙個請求改變了物件的狀態,此時物件又處理另乙個請求,而之前請求對物件狀態的改變導致了物件對另乙個請求做了錯誤的處理;

用單例和多例的標準只有乙個:

當物件含有可改變的狀態時(更精確的說就是在實際應用中該狀態會改變),則多例,否則單例;

1)singleton(預設配置)

當乙個bean的作用域為singleton, 那麼spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一例項。

預設配置成單例的意義是:把bean放在ioc容器中統一進行管理,只在初始化載入的時候例項化一次,一方面提高了效率,另一方面大大降低了記憶體開銷

2)prototype

乙個bean定義對應多個物件例項。prototype作用域的bean會導致在每次對該bean請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法)時都會建立乙個新的bean例項。根據經驗,對有狀態的bean應該使用prototype作用域,而對無狀態的bean則應該使用singleton作用域。

Spring Bean的作用域

bean的作用域,常用的有兩種,單例singleton 多例prototype 預設情況下,bean都是單例的singleton。在容器初始化的時候就被建立,就這麼乙份。1 單例模式 例如 測試 package com.lynn.spring.test import static org.junit...

Spring bean的作用域

spring框架中,bean 的作用域有如下五種 1.單例 每個spring的ioc容器返回來乙個bean例項 框架預設 2.原型 當每次請求時候都返回來乙個bean例項 3.請求 每個http請求返回來乙個bean例項 4.會話 每個http會話返回來乙個bean例項 5.全域性會話 返回全域性會...

Spring Bean的作用域

在xml檔案中配置bean時,我們可以通過scope為bean配置指定的作用域。bean的作用域分為五種 說明 singleton 單例模式,乙個bean容器中只存在乙個bean例項 prototype 原型模式,每次請求都會產生乙個新的bean例項 request 每次http請求會產生乙個新的b...