Spring(2)

ApplicationContext是BeanFactory的子接口,是另一种常用的Spring核心容器,它由org.springframework.context.ApplicationContext接口定义,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。创建ApplicationContext接口实例,通常采用两种方法:
1、通过ClassPathXmlApplicationContext创建

ApplicationContext applicationContext=new ClassPathXmlApplicationContext(String,configLocation);
ClassPathXmlApplicationContext会从类路径classPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。

2、通过FileSystemXmlApplicationContext创建

ApplicationContext applicationContext=new FileSystemXmlApplicationContext(String configLocation);

FileSystemXmlApplicationContext会从指定的文件系统(绝对路径)中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作

  • 在Java项目中,会通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器。而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。
  • web服务器实例化ApplicationContext容器时,通常会使用ContextLoaderListener来实现,此种方式只需要在web.xml中添加如下代码:
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>
			classpath:spring/applicationContext.xml
	</param-value>
</context-param>
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>
  • 创建Spring容器之后,就可以获取Spring容器中的Bean。Spring获取Bean的实例通常采用以下两种方法:
    (1)Object getBean(String name);
    根据容器中Bean的id或name来获取指定的Bean,获取之后需要进行强制类型转换
    (2) getBean(Class requiredType);
    根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换

  • 总结:BeanFactory和ApplicationContext两种容器都是通过XML文件配置和加载Bean的。二者的主要区别在于,如果Bean的一个属性没有注入,使用BeanFactory加载后,在第一次调用getBean()方法时会抛出异常,而在ApplicationContext则在初始化时自检,这样有利于检查所依赖的属性是否注入。因此,在实际开发中,通常优先使用ApplicationContext,而只有在系统资源较少时,才考虑使用BeanFactory。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值