2023年Spring面试关键点:BeanFactory与ApplicationContext对比

需积分: 5 0 下载量 45 浏览量 更新于2024-08-03 收藏 6KB MD 举报
"Spring面试题及答案整理汇总,2021年最新版" ### Spring面试知识点详解 #### 1. 区分BeanFactory和ApplicationContext **BeanFactory** 是Spring框架中最基础的bean容器,它实现了IoC(控制反转)的核心功能。BeanFactory在需要使用bean时才进行实例化,即采用懒加载策略。它不支持国际化,需要用户显式地提供资源对象,并且不处理基于依赖的注解。适合小型项目或对性能有较高要求的情况。 **ApplicationContext** 是BeanFactory的高级接口,提供了更多企业级应用所需的功能。ApplicationContext在启动时会立即加载所有bean,采用即时加载策略。它支持国际化,能自动创建和管理资源对象,同时支持基于注解的依赖注入,使得配置更为简洁。ApplicationContext是大多数Spring应用的首选容器,尤其适用于复杂的应用场景。 #### 2. 如何在SpringBoot上实现热部署 SpringBoot提供了名为**DevTools** 的模块,用于在开发过程中自动重载应用的更改,而无需每次都手动重启服务器。只需在项目中添加DevTools的依赖,当代码发生变化并保存后,内嵌的Tomcat会自动重启,快速反映代码变更。不过,DevTools在生产环境中默认是禁用的,以避免不必要的性能影响。此外,DevTools还提供了H2数据库控制台,便于开发者进行测试和调试。 #### 3. Spring JDBC API中的核心类 - **JdbcTemplate**:是Spring提供的一个基础JDBC模板类,简化了数据库操作,提供了一套事务管理、异常转换等通用功能。 - **SimpleJdbcTemplate**:基于JdbcTemplate的更简单版本,提供了一些简化的API。 - **NamedParameterJdbcTemplate**:支持命名参数的JDBC模板,使得SQL语句中的参数更加易读。 - **SimpleJdbcInsert**:简化插入数据的操作,可以自动获取生成的主键值。 - **SimpleJdbcCall**:用于执行存储过程和函数,提供了方便的API来处理结果集。 #### 4. SpringCloud与Dubbo的区别 - **服务调用方式**:Dubbo使用RPC(远程过程调用)协议,SpringCloud基于HTTP RESTful API。 - **注册中心**:Dubbo通常使用Zookeeper作为服务注册中心,而SpringCloud可以使用Eureka,也可以是Zookeeper。 - **服务网关**:Dubbo没有内置的服务网关,需要额外集成如Zuul、Gateway等组件;SpringCloud提供了Zuul作为路由网关,实现请求分发,并支持断路器、配置管理等微服务架构要素。 #### 5. SpringBoot初始化环境变量流程 - **prepareEnvironment**:在SpringBoot应用启动时,首先调用`prepareEnvironment`方法,设置运行环境,包括定义环境属性、加载配置文件等。 - **ApplicationEnvironmentPreparedEvent**:环境准备完成后,会发布一个`ApplicationEnvironmentPreparedEvent`事件,允许监听器在这个阶段进行自定义配置。 - **ApplicationStartedEvent**:接着,SpringBoot会发布`ApplicationStartedEvent`,表示应用已启动,但尚未处理任何请求。 - **ApplicationReadyEvent**:最后,当应用准备好接收请求时,发布`ApplicationReadyEvent`,标志着SpringBoot应用启动完成。 以上是Spring面试中常见的知识点,涵盖了Spring的核心概念、SpringBoot的特性以及SpringCloud与Dubbo的对比。这些内容对于理解Spring框架及其生态有着重要的作用。