春天

Spring - Bean scope

Spring - Bean scope

在描述時,您可以選擇聲明該bean的度數。例如,要在每次需要時驅動Spring創建另一個bean,您應該將bean的擴展質量宣布為原型。同樣地,假設您需要Spring在每次需要bean時返回一個類似的bean場合,那麼您應該將bean的擴展特性聲明為單例。Spring框架支持附帶的5個擴展,其中3個是可以訪問的,前提是你要利用一個web- minded ApplicationContext。

範圍和目的

  • 單例

這些將bean定義限定為每個Spring IoC持有者的單獨示例(默認)。

  • 原型

這將一個單獨的bean定義限定在相當多的文章示例中。

  • 請求

這將bean定義作用於HTTP需求——對於關注web的Spring ApplicationContext來說是實質性的。

  • 會話

這將bean定義作用於一個HTTP會議——對於一個關注web的Spring ApplicationContext來說是實質性的

  • 交投

這將bean定義作用於全球範圍內的HTTP會議——對於關注web的Spring ApplicationContext來說是實質性的。

單例作用域

如果一個擴展被設置為單例,Spring IoC隔間將隻在一個場合使用該bean定義所描述的項目。這個單獨的事件被保存在單例bean的儲備中,隨後對該命名bean的每個請求和引用都返回存儲的對象。默認的度始終是單例的。盡管如此,當您隻需要一個bean出現時,您可以將擴展屬性設置為bean安排文檔中的單例。

通過以下步驟,您可以創建一個Spring應用程序:

# 1:創建一個名為SpringDemo的項目,並在生成任務的src信封下創建一個捆綁包演示。

# 2:使用添加外部jar選項添加所需的Spring庫,如Spring Hello World演示示例部分所述。

# 3:在演示包下創建Java類HelloWorld和MainApp。

#4:在src信封下創建Beans設置記錄Beans.xml。

#5:最後一個改進是創建所有Java記錄和Bean配置文檔的實質並運行應用程序

例子

公共類HelloWorld{私有字符串消息;public void setMessage(字符串消息)Message =消息;}公共無效getMessage(){System.out。println(消息);}}

MainApp代碼:

包演示;進口org.springframework.context.ApplicationContext;進口org.springframework.context.support.ClassPathXmlApplicationContext;公共類MainApp{公共靜態void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");HelloWorld objA = (HelloWorld) context.getBean(" HelloWorld ");objA。setMessage(“對象”);objA.getMessage ();HelloWorld objB = (HelloWorld) context.getBean(" HelloWorld ");objB.getMessage (); } } xml Code:    

原型範圍

如果度被設置為模型,Spring IoC持有者在每次對特定bean進行請求時都會對文章進行另一個bean case。當有疑問時,對所有有狀態的bean使用模型度,對無狀態bean使用單例範圍。為了描述一個原型擴展,您可以在bean設置文檔中將degree屬性設置為model

# 1:創建一個名為SpringDemo的項目,並在生成任務的src信封下創建一個捆綁包演示。

# 2:如Spring Hello World示例部分所述,使用Add External JARs替代方法添加所需的Spring庫。

# 3:在演示包下創建Java類HelloWorld和MainApp。

#4:在src管理器下創建bean安排記錄Beans.xml。

# 5:最後一個改進是創建所有Java記錄和Bean配置文檔的內容並運行應用程序

HelloWorld.Java和MainApp.Java代碼是一樣的;但是,XML代碼如下所示:

    .

Baidu
map