1.8 bean中的scope属性

戴着假发的程序员 出品

[查看视频讲解]

scope属性用于指定bean的作用域。可以取一下几个值:

   singleton:单例模式(默认);    

  prototype:多例模式;    

  request:作用于web应用的请求范围;    

  session:作用于web应用的会话范围    

  global-session:作用于集群环境的会话范围;

其中使用比较多的是singleton,这个也是默认值。

spring在容器创建的同时就会创建所有scop为singleton的对象,我们从容器中获取同一个singleton对象无论多少次,获取的都是同一个对象。

1 <!-- 注册accountService -->
2 <bean id="accountService" scope="singleton" class="com.dk.demo1.service.AccountService">
3     <!-- 给accountService注入属性accountDAO -->
4     <property name="accountDAO" ref="accountDAO"/>
5 </bean>

测试:

1 //创建spring容器
2 ApplicationContext ac =
3         new ClassPathXmlApplicationContext("applicationContext.xml");
4 AccountService bean1 = (AccountService) ac.getBean("accountService");
5 AccountService bean2 = (AccountService) ac.getBean("accountService");
6 bean.save("bean1==bean2-->"+(bean1==bean2));

如果scop配置为prototype,那么spring容器初始化时,不会创建该对象,每次从容器中获取该对象时都会创建一个新的对象返回:

1 <!-- 注册accountService -->
2 <bean id="accountService" scope="prototype" class="com.dk.demo1.service.AccountService">
3     <!-- 给accountService注入属性accountDAO -->
4     <property name="accountDAO" ref="accountDAO"/>
5 </bean>

posted @ 2020-10-03 20:09  戴着假发的程序员0-1  阅读(234)  评论(0编辑  收藏  举报