【springDay02】作用域、生命周期、延迟加载

springDay01

作用域

scope属性:

  1. singleton 一个bean只创建、共用一个实例(默认)
  2. prototype 一个bean创建多个实例
<!-- 
		scope属性:用来配置作用域:
			1:singleton 一个bean只创建、共用一个实例(默认)
			2. prototype 一个bean创建多个实例
	 -->
	<bean id="s1" class="scope.ScopeBean"
	    scope="prototype"/>
package test;

import org.junit.Test;//导入junit
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import scope.ScopeBean;

public class TestCase {
	@Test
	//启动spring容器
	public void test1() {
		ApplicationContext ac=
				new ClassPathXmlApplicationContext(
						"scope.xml");
		ScopeBean s1=
				ac.getBean("s1", ScopeBean.class);
		ScopeBean s2=
				ac.getBean("s1", ScopeBean.class);
		System.out.println(s2==s1);
	}
}

生命周期

  1. 初始化
    init-method属性:指定初始化方法。
  2. 销毁
    destroy-method属性:在关闭容器时,启动指定方法
  3. 注意:
    想要调用close方法,需要把容器类型转换成AbstractApplicationContext
<bean id="mb1" class="scope.MessageBean" 
	    init-method="init"
	    destroy-method="destroy"/>
public class MessageBean {
	
	public MessageBean() {
		System.out.println("MessageBean()");
	}
	public void init() {
		System.out.println("init()");
	}
	public void send() {
		System.out.println("send()");
	}
	private void destroy() {
		System.out.println("destroy()");
	}
}
	//启动容器
		AbstractApplicationContext ac=
				new ClassPathXmlApplicationContext("scope.xml");
		System.out.println(ac);
		//创建对象.自动调用init方法
		MessageBean mBean=ac.getBean("mb1", MessageBean.class);
		mBean.send();
		/**
		 * 关闭容器
		 * 注意:
		 * 	想要调用close方法,需要把容器类型转换成AbstractApplicationContext
		 *关闭容器时会自动调用销毁方法
		 */
		ac.close();

延迟加载

#默认情况下,spring容器启动后,会自动将所有作用域为单例的bean创建好。

lazy-init属性:

  • 当把该属性设置为true后,只有在需要时才创建bean对象·。
  • 注意:只对作用域为单例的bean有作用
    day03
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值