Spring簡明分析Bean作用域
Bean作用域
經過前面的學習,我們可以知道bean是存在作用域的。
從spring的官方文檔中發(fā)現(xiàn)spring支持六種作用域,我們只需要重點認識singleton、protoType即可,后面的作用域都是于web框架相關的。

一、singleton(單例模式)

就和圖中的一樣,如果bean的作用域為singleton,那么在IOC容器中只有每個bean只有一個唯一的實例被創(chuàng)建。
我們通過代碼來認識一下,bean的單例模式
bean的作用域默認是singleton,我們也可以手動通過在xml的bean中scope進行設置。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="pojo.User" scope="singleton"/>
</beans>根據(jù)同一個bean 獲取兩次實例,查看實例是否相同
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user1 = context.getBean("user", User.class);
User user2 = context.getBean("user",User.class);
System.out.println(user1==user2);
}
查看運行結果

說明 這個Bean的作用域是單例模式,根據(jù)這個bean只能創(chuàng)建一個唯一的實例。
二、protoType(原型模式)

就和圖中的一樣,如果bean的作用域為protoType,那么在IOC容器中每個bean都可以創(chuàng)建多個實例。
我們通過代碼來認識一下,bean的原型模式
bean的作用域默認是singleton,我們也可以手動通過在xml的bean中scope進行設置成 protoType。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="pojo.User" scope="prototype"/>
</beans>根據(jù)同一個bean 獲取兩次實例,查看實例是否相同
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user1 = context.getBean("user", User.class);
User user2 = context.getBean("user",User.class);
System.out.println(user1==user2);
}查看運行結果

說明了當設置bean為 protoType時,一個bean可以創(chuàng)建多個不同的實例。
到此這篇關于Spring簡明分析Bean作用域的文章就介紹到這了,更多相關Spring Bean作用域內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用springboot打包成zip部署,并實現(xiàn)優(yōu)雅停機
這篇文章主要介紹了使用springboot打包成zip部署,并實現(xiàn)優(yōu)雅停機,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
MyBatis利用MyCat實現(xiàn)多租戶的簡單思路分享
這篇文章主要給大家介紹了關于MyBatis利用MyCat實現(xiàn)多租戶的簡單思路的相關資料,文中的多租戶是基于多數(shù)據(jù)庫進行實現(xiàn)的,數(shù)據(jù)是通過不同數(shù)據(jù)庫進行隔離,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06
Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例
這篇文章主要介紹了Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

