天天看點

Spring中Bean的單例和多例

人工智能,零基礎入門!http://www.captainbed.net/inner

在Spring中,bean可以被定義為兩種模式:prototype(多例)和singleton(單例)

singleton(單例):隻有一個共享的執行個體存在,所有對這個bean的請求都會傳回這個唯一的執行個體。

prototype(多例):對這個bean的每次請求都會建立一個新的bean執行個體,類似于new。

Spring bean 預設是單例模式。

實戰示範:

在配置檔案中,修改這句代碼為:

在測試類中,修改代碼為:

<bean id="hi" class="com.test.Hi" init-method="init" scope="singleton">
           
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
Hi hi1 = (Hi) context.getBean("hi");
Hi hi2 = (Hi) context.getBean("hi");
System.out.println(hi1);
System.out.println(hi2);
           

結果為:

Spring中Bean的單例和多例

結論:二個變量指向一個對象。

将配置檔案改為:

<bean id="hi" class="com.test.Hi" init-method="init" scope="prototype">
           

其他的不變,運作測試類,結果為:

Spring中Bean的單例和多例

結論:每次通路bean,均建立一個新執行個體。

此外,在springBoot項目中如果要配置單例或者多例,可以在對應的bean上加一個@scope()注解

Spring中Bean的單例和多例