- 1.什么是Spring?
- 2.Spring的优缺点是什么?
- 3.Spring有哪些应用场景
- 4.Spring由哪些模块组成?
- 5.Spring框架中都用到了哪些设计模式?
- 6.什么是Spring IoC容器?
- 7.控制反转(IoC)的作用是什么?
- 8.Spring IoC的实现机制
- 9.BeanFactory 和 ApplicationContext有什么区别?
- 10.什么是依赖注入?
- 11.依赖注入的方式有哪些?
- 12.如何选择合适的依赖注入方式?
- 13.什么是Spring bean?
- 14.将一个类声明为Spring的bean 的注解有哪些?
- 15.如何给Spring容器提供配置元数据?Spring有几种配置方式?
- 16.Spring基于xml注入bean的几种方式
- 17.Spring中的Bean的作用域有哪些?
- 18.Spring框架中的单例bean是线程安全的吗?
- 19.解释Spring框架中bean的生命周期
- 20.什么是bean的自动装配?
- 21.Spring自动装配bean 有哪些方式?
- 22.自动装配有哪些局限性?
- 23.Spring怎么解决循环依赖问题?
- 24.如何开启注解装配?
- 25.Spring bean相关注解
- 26.Web开发相关注解
- 27.Spring AOP相关注解
- 28.Spring支持的事务管理类型,Spring 事务实现方式有哪些?
- 29.Spring的事务隔离级别有哪些?
- 30.Spring事务的传播行为有哪些?
- 31.Spring框架的事务管理有哪些优点?
- 32.什么是SpringMVC
- 33.SpringMVC的优点
- 34.SpringMVC的工作原理
- 35.什么是Springboot?Springboot的特点(Springboot和Spring有什么区别)
- 36.SpringBoot自动配置原理
- 37.SpringBoot配置加载顺序
- 38.SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
- 39.SpringBoot 打成的jar包和普通的jar包有什么区别 ?
39.SpringBoot 打成的jar包和普通的jar包有什么区别 ?
BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。至于它们之间的关系,可以打开idea,查看它们的UML类图,如下,从可以看出ApplicationContext是BeanFactory的子接口

两者之间的区别:
作用
BeanFactory接口作用:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。
ApplicationContext接口作用:ApplicationContext接口作为BeanFactory的派生,除了提供BeanFactory所具有的功能外,还有额外的功能
- 提供在监听器中注册bean的事件
- 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
- 同时加载多个配置文件
- 统一的资源文件访问方式
- 继承MessageSource,因此支持国际化
加载方式
BeanFactroy:采用的是延迟加载形式来注入Bean,也就是只有在使用到某个bean时,才会对该bean进行加载实例化,这样的弊端很明显,就是如果spring的配置存在问题,那么只有BeanFactory加载后,使用到这个bean时才可以发现问题。
ApplicationContext:ApplicationContext采用的是预加载机制,在容器启动时,一次性创建所有的bean。这种可以避免BeanFactory接口中出现的问题,容器启动时就可以发现Spring配置中存在的错误,但缺点是会占用内存空间,并且当配置的bean较多时,程序启动会变慢。
创建方式
BeanFactroy:采用编程的方式创建,如BeanFactory factory = new XmlBeanFactory (new ClassPathResource("beans.xml"));
ApplicationContext:除了采用编程的方式创建,还可以使用声明的方式创建,在web.xml文件添加如下代码
<!--指定Spring配置文件的位置,有多个配置文件时,以逗号分隔-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--spring将加载spring目录下的applicationContext.xml文件-->
<param-value>
classpath:spring/applicationContext.xml
</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动Spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
注册方式
BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版