从spring容器中获取bean的两种方式java
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); ChangeService bean = (ChangeService) ac.getBean("change");
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("bean.xml")); factory.getBean("check");
区别:第一种方式,若是是singleton做用域,在容器初始化的同时也建立了bean实例;第二种方式,初始化容器并不建立bean对象,而是在获取bean时才建立对象。web
2.bean的做用域spring
做用域 |
描述 |
singleton |
在每一个Spring IoC容器中一个bean定义对应一个对象实例。 |
prototype |
一个bean定义对应多个对象实例。session |
requestspa |
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义建立而成。该做用域仅在基于web的Spring ApplicationContext情形下有效prototype |
session | 在一个HTTP Session中,一个bean定义对应一个实例。该做用域仅在基于web的Spring ApplicationContext情形下有效。code |
global sessionxml |
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型状况下,仅在使用portlet context的时候有效。该做用域仅在基于web的Spring ApplicationContext情形下有效 |