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)求而初始化后,將一直存活到容器退出讲逛,也就是說亏吝,它與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ì)象長時(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)境拙绊,如果沒有 Portlet 環(huán)境那么globalSession 相當(dāng)于 session