1、导入坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
2、创建TestDao
public interface TestDao {
public void save();
}
public class TestDaoImpl implements TestDao {
@Override
public void test() {
System.out.println("test 方法被调用了。。。");
}
}
3、创建applicationContext.xml进行配置
<?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、测试运行
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestDao userDao = (TestDao) context.getBean("testDao");
userDao. test();
}
运行结果
WeChatb33963d005e2527e1369824ea07c617a.png
①singleton (默认值,单例的)
scope默认值singleton。scope为singleton的时候,在Spring的IoC容器中只存在一个实例,所有对该对象的引用将共享这个实例。该实例从容器启动,并因为第一次被请求而初始化后,将一直存活到容器退出,也就是说,它与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);
WeChat93ba8fcbc4f74cb87a4db1545f91f2b7.png
②prototype (多例的)
scope为singleton的时候,Bean的实例化个数是多个,当调用getBean()方法时实例化Bean ,当使用对象时,创建新的对象实例 ,只要对象在使用中,就一直活着 ,当对象长时间不用时,被 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);
WeChat24a1752395264da2122ddd63833d3a20.png
③request、session、global session
这三个scope类型是Spring2.0之后新增加的,它们不像上面两个那么通用,它们只适用于Web应用程序,通常是与XmlWebApplicationContext共同使用(注意:只能使用scope属性才能使用这三种,也就是必须使用XSD文档声明的XML配置文件格式)
request
Spring 创建一个 Bean 的对象,将对象存入到 request 域中
session
Spring 创建一个 Bean 的对象,将对象存入到 session 域中
global session
应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当于 session
网友评论