IOC操作Bean管理XML方式(bean的作用域)
目錄
IOC操作Bean管理XML方式(bean的作用域)
1.在Spring 里面,設置創建 bean 實例是單實例還是多實例的方式
(1)在Spring 配置文件bean 標簽里面有屬性(scope)用于設置單實例還是多實例
(2)scope 屬性值
(3)singleton 和 prototype 的區別
2.在Spring 里面,默認情況下,bean 是單實例對象
實驗步驟:
結果如下:
結論:
掌握:
?
?
?
IOC操作Bean管理XML方式(bean的作用域)
?
單實例:顧名思義就是一個類只有一個實例,并且類負責創建自己的對象,這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。例如:一個餐桌就是一個單實例,每個人都可以用,但是它僅有一個
多實例:每次都新建一個對象?
1.在Spring 里面,設置創建 bean 實例是單實例還是多實例的方式
(1)在Spring 配置文件bean 標簽里面有屬性(scope)用于設置單實例還是多實例
(2)scope 屬性值
第一個值:默認值 singleton,表示是單實例對象
第二個值:非默認 prototype,表示是多實例對象
測試效果:
很明顯看到兩個對象的地址不一樣,證明不是同一個對象
?
(3)singleton 和 prototype 的區別
主要體現在創建的時機不一樣
scope設置為singleton 的時候,加載 spring 配置文件的時候就會創建單實例對象
scope設置為prototype 的時候,不是在加載spring 配置文件時候創建對象,而是在調用 getBean 方法的時候才會創建多實例對象??
補充兩個scope的屬性(使用頻率很低):
request:request表示一次請求,每次創建對象,會放到request的域對象中
session:session表示一次會話,每次創建對象,會放到session的域對象中
?
?
2.在Spring 里面,默認情況下,bean 是單實例對象
方法:把一個對象獲取多次,然后輸出,輸出后比較兩個對象的地址,如果地址相同,則是單實例對象
實驗步驟:
在TestSpring5Demo 測試類中的代碼如下:
把book對象獲取多次,輸出結果:
package com.lbj.spring5.testdemo;import com.lbj.spring5.collectiontype.Book; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring5Demo1 {@Testpublic void tsetCollection4(){ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");Book book1=context.getBean("book", Book.class);Book book2=context.getBean("book", Book.class);System.out.println(book1);System.out.println(book2);} }?
結果如下:
地址相同
?
結論:
默認情況下,bean 是單實例對象
?
掌握:
在bean中如何設置多實例和單實例?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的IOC操作Bean管理XML方式(bean的作用域)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无法将该对象添加到ldap服务器_LDA
- 下一篇: Linux中的【.】【./】【/】代表的