教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

SpringBean的配置中Bean的范圍配置

更新時間:2023年04月06日15時08分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

Spring開發中主要是對Bean的配置,本節我們來看Bean的范圍配置。 默認情況下,單純的Spring環境Bean的作用范圍有兩個:Singleton和Prototype。

singleton:單例,默認值,Spring容器創建的時候,就會進行Bean的實例化,并存儲到容器內部的單例池中,每次getBean時都是從單例池中獲取相同的Bean實例。

prototype:原型,Spring容器初始化時不會創建Bean實例,當調用getBean時才會實例化Bean,每次getBean都會創建一個新的Bean實例。

當scope設置為singleton時,獲得兩次對象打印結果是一樣的。

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="singleton"/>
Object userDao = applicationContext.getBean("userDao");
Object userDao2 = applicationContext.getBean("userDao");
System.out.println(userDao); //com.itheima.dao.impl.UserDaoImpl@631330c
System.out.println(userDao2); //com.itheima.dao.impl.UserDaoImpl@631330c

通過斷點調試,觀察可以發現單例池中存在 userDao 實例。

Bean的范圍配置

當scope設置為prototype時,獲得兩次對象打印結果是不一樣的。

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="prototype"/>
Object userDao = applicationContext.getBean("userDao");
Object userDao2 = applicationContext.getBean("userDao");
System.out.println(userDao);   //com.itheima.dao.impl.UserDaoImpl@4d50efb8 
System.out.println(userDao2);  //com.itheima.dao.impl.UserDaoImpl@7e2d773b

通過斷點調試,觀察可以發現單例池中不存在userDao實例,但是userDao的信息已經被存儲到beanDefinitionMap中了。

斷點調試

0 分享到:
和我們在線交談!
国产免费观看黄A片又黄又硬