Spring实例化Bean的方式、Bean的作用域、生命周期

1、通过构造器实例化Bean

<!-- 1.通过构造器实例化bean,id和name属性都指定Bean对象的名称,方便从Spring容器中查找相应的Bean
class属性用于指定Bean类型,会自动调用无参构造创建对象 -->
	<bean id="obj1" class="java.util.GregorianCalendar"></bean>

//	通过构造器实例化bean
	@Test
	public void test2() {
		String conf = "applicationContext.xml";
//		实例化Spring容器
		ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
//		通过id或name属性指定的名称获取Bean
		Calendar bean = (Calendar) ac.getBean("obj1");
		System.out.println(bean);
	}

在这里插入图片描述
2、通过静态工厂实例化Bean

<!-- 2.通过静态工厂实例化bean,id指定Bean名称;class指定工厂类型;factory-method
指定工厂中创建Bean对象的方法,必须用static修饰的方法 -->
	<bean id="obj2" class="java.util.GregorianCalendar" factory-method="getInstance"/>
	
	//	通过静态工厂实例化bean
	@Test
	public void test3() {
		String conf = "applicationContext.xml";
		ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
		Calendar bean = ac.getBean("obj2", Calendar.class);
		System.out.println(bean);
	}

3、通过实例工厂方法实例化Bean

<!-- 3.通过实例工厂方法实例化bean,id指定Bean对象名称;factory-bean属性指定工厂Bean对象;
factory-method指定工厂中创建Bean对象的方法 -->
	<bean id="obj3" class="java.util.GregorianCalendar"/>
	<bean id="obj4" factory-bean="obj3" factory-method="getTime"/>

//	通过实例工厂方法实例化bean
	@Test
	public void test4() {
		String conf = "applicationContext.xml";
		ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
		Date bean = ac.getBean("obj4", Date.class);
		System.out.println(bean);
	}

在这里插入图片描述
Bean的作用域:
  通过中的scope属性可以指定Bean作用域
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Bean的生命周期
  Spring容器默认在初始化时将所有人都singleton bean提前进行实例化,如果不想让bean被提前实例化,可以通过设置lazy-init="true"来改变,这样这个bean会在第一次被调用时在进行实例化,适用于使用频率很低的singleton对象.

public class ExampleBean implements Serializable{
	private static final long serialVersionUID = 1L;
	
	public ExampleBean() {
		System.out.println("实例化ExampleBean:"+this);
	}
	
	public void init() {
		System.out.println("初始化ExampleBean");
	}
	
	public void destory() {
		System.out.println("销毁ExampleBean");
	}

	public void execute() {
		System.out.println("执行execute方法");
	}
}

lazy-int属性为false时,实例化容器是bean就会被初始化
在这里插入图片描述
在这里插入图片描述
lazy-init属性为ture时,调用bean是bean才会被初始化(懒加载)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值