前两天,有位同学在面试中被问了: Spring中获取Bean有几种方式?
为了悲剧不在上演,今天给大家安排。
一共七种方式
1、使用 BeanFactory
直接获取(不推荐)
2、在初始化时保存 ApplicationContext
对象
3、继承自抽象类 ApplicationObjectSupport
4、继承自抽象类 WebApplicationObjectSupport
5、使用Spring提供的工具类 WebApplicationContextUtils
6、实现 ApplicationContextAware
接口
7、使用 ContextLoader
提供的 getCurrentWebApplicationContext()
方法
面试遇到了把这七种方式说完就行,其实只要你能记住三五种,面试官也是认可你的。
可是,不好记呀,对么?怎么办?
下面,田哥给你整理好了每个方式的对应案例。
一.使用BeanFactory直接获取(不推荐)
使用 BeanFactory
从工厂中直接获取Bean实例,但是 XmlBeanFactory
类已经废弃,因此不建议使用,测试代码如下:
/**
* 方式一:XmlBeanFactory已经废弃不建议使用
*/
@Test
public void getBeanTest1() {
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
UserInfo userInfo = (UserInfo) beanFactory.getBean("userInfo");
System.out.println(userInfo);
}
二.在初始化时保存ApplicationContext对象
可以在初始化的时候保存 ApplicationContext
对象,然后通过这个对象获取Bean,测试代码如下:
/**
* 方式二:使用ClassPathXmlApplicationContext获取ApplicationContext
*/
@Test
public void getBeanTest2() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserInfo use