1、導(dǎo)入坐標(biāo)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
2、創(chuàng)建TestDao
public interface TestDao {
public void save();
}
public class TestDaoImpl implements TestDao {
@Override
public void test() {
System.out.println("test 方法被調(diào)用了。。。");
}
}
3、創(chuàng)建applicationContext.xml進(jìn)行配置
<?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="testDao" class="com.demo.dao.impl.TestDaoImpl">
</bean>
</beans>
4、測(cè)試運(yùn)行
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestDao userDao = (TestDao) context.getBean("testDao");
userDao. test();
}
運(yùn)行結(jié)果

①singleton (默認(rèn)值,單例的)
scope默認(rèn)值singleton。scope為singleton的時(shí)候,在Spring的IoC容器中只存在一個(gè)實(shí)例,所有對(duì)該對(duì)象的引用將共享這個(gè)實(shí)例。該實(shí)例從容器啟動(dòng),并因?yàn)榈谝淮伪徽?qǐng)求而初始化后,將一直存活到容器退出,也就是說(shuō),它與IoC容器“幾乎”擁有相同的壽命
<bean id="testDao" class="com.demo.dao.impl.TestDaoImpl" scope="singleton" >
</bean>
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestDao testDao = (TestDao) context.getBean("testDao");
TestDao testDao2 = (TestDao) context.getBean("testDao");
testDao.save();
testDao2.save();
System.out.println(testDao);
System.out.println(testDao2);

②prototype (多例的)
scope為singleton的時(shí)候,Bean的實(shí)例化個(gè)數(shù)是多個(gè),當(dāng)調(diào)用getBean()方法時(shí)實(shí)例化Bean ,當(dāng)使用對(duì)象時(shí),創(chuàng)建新的對(duì)象實(shí)例 ,只要對(duì)象在使用中,就一直活著 ,當(dāng)對(duì)象長(zhǎng)時(shí)間不用時(shí),被 Java 的垃圾回收器回收了
<bean id="testDao" class="com.demo.dao.impl.TestDaoImpl" scope="prototype" >
</bean>
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestDao testDao = (TestDao) context.getBean("testDao");
TestDao testDao2 = (TestDao) context.getBean("testDao");
testDao.save();
testDao2.save();
System.out.println(testDao);
System.out.println(testDao2);

③request、session、global session
這三個(gè)scope類型是Spring2.0之后新增加的,它們不像上面兩個(gè)那么通用,它們只適用于Web應(yīng)用程序,通常是與XmlWebApplicationContext共同使用(注意:只能使用scope屬性才能使用這三種,也就是必須使用XSD文檔聲明的XML配置文件格式)
request
Spring 創(chuàng)建一個(gè) Bean 的對(duì)象,將對(duì)象存入到 request 域中
session
Spring 創(chuàng)建一個(gè) Bean 的對(duì)象,將對(duì)象存入到 session 域中
global session
應(yīng)用在 Portlet 環(huán)境,如果沒(méi)有 Portlet 環(huán)境那么globalSession 相當(dāng)于 session