人工智能,零基礎入門!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);
結果為:
結論:二個變量指向一個對象。
将配置檔案改為:
<bean id="hi" class="com.test.Hi" init-method="init" scope="prototype">
其他的不變,運作測試類,結果為:
結論:每次通路bean,均建立一個新執行個體。
此外,在springBoot項目中如果要配置單例或者多例,可以在對應的bean上加一個@scope()注解