Spring-3 ApplicationContext

Spring容器的最基本接口就是BeanFactory,它有一个子接口:ApplicationContext,称Spring上下文。

BeanFactory包含以下5个方法: 

- boolean       containsBean(String name):         Spring容器中是否包含id为name的bean 

- < T>T          getBean(Class<> requied Type):  该类型时,对象唯一可以获取 

- Object         getBean(String name)

 - <T> T         getBean(String name, Class requiedType)

 - Class<?>   getType(String name)

ApplicationContext包含BeanFactory的全部功能,还有额外的功能,通常不会使用BeanFactory,建议使用ApplicationContext

ApplicationContext的额外功能:

一、默认初始化suoyou所有singleton Bean,也可以通过配置取消。

        当系统创建ApplicationContext时,默认会预初始化所有的singleton Bean。包括调用构造器创建实例,及根据<property>执行setter方法,意味着系统前期开销大。

bean:

package codeEETest;
public class Person
{
	public Person()
	{
		System.out.println("==正在执行Person无参数的构造器==");
	}
	public void setTest(String name)
	{
		System.out.println("正在调用setName()方法,传入参数为:" + name);
	}
}
xml:

<bean id="chinese" class="codeEETest.Person">
	<!-- 驱动Spring执行chinese Bean的setTest()方法,以"孙悟空"为传入参数 -->
	<property name="test" value="孙悟空"/>
</bean>
即使主程序只有一行代码,即创建容器:
ApplicationContext ctx = new ClassPathXmlApplicationContext("codeEETest/beans.xml");

Spring容器仍然会初始化Bean,结果:

==正在执行Person无参数的构造器==
正在调用setName()方法,传入参数为:孙悟空


为了防止初始化,配置lazy-init="true"

	<bean id="chinese" class="codeEETest.Person" lazy-init="true">
		<!-- 驱动Spring执行chinese Bean的setTest()方法,以"孙悟空"为传入参数 -->
		<property name="test" value="孙悟空"/>
	</bean>

二、ApplicationContext事件机制



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值