1. 程式人生 > >Spring的Bean作用域 scope屬性指定Bean是否為單例物件

Spring的Bean作用域 scope屬性指定Bean是否為單例物件

Bean作用域: 預設屬性scope="singleton"表示容器初始化建立這一個Bean 單例的

 Hello person1 = (Hello) applicationContext.getBean("helloSet1");
 Hello person2 = (Hello) applicationContext.getBean("helloSet1");
 System.out.println(person1==person2);

輸出:

true

修改:scope=”prototype” 每次從IOC容器中獲取的物件都是重新創造的一個物件 輸出:false *

驗證:singleton屬性使得容器初始化時建立bean物件 物件類新增無參的建構函式:

 public Hello() {
        System.out.println("初始化一個物件");
    }
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

直接輸出:

初始化一個物件

總結: 表示容器初始化的時候的同時建立Bean物件, 當下次獲取物件的時候直接返回一開始建立的那個物件

而scope=”prototype” 容器初始化的時候沒有建立物件, 只有當從容器中獲取Bean的時候會建立一個新的Bean例項物件 呼叫幾次就建立幾個新的物件