2023年7月19日面试题
1. 你是如何理解IoC的?
答:
- IoC全称为控制反转,Inversion of Control,是一种编程思想,Spring中将其实现为一个容器,IoC容器是Spring框架中的重要组件之一。
- 控制反转就是将对象的创建、实例化和初始化的控制权交给IoC容器。而不是使用new关键字来创建。这些被IoC控制管理的对象,称为Spring Bean。
- IoC容器是由工厂模式实现的,IoC容器就是这个工厂,产品就是Spring Bean。
- 我们可以通过xml配置文件、注解和配置类的方式将一个对象定义为Bean,放入IoC容器中。
- 当我们需要使用某个Bean时,可以通过上下文context来获取。
- 配合@Autowired注解可以实现依赖注入
- IoC降低了对象与对象之间的耦合性,提高了程序的灵活性和功能的复用性。
2. 你是如何理解AOP的?
答:
- AOP是面向切面编程,是面向对象编程的延续。
- AOP可以在不改变目标类原有代码的基础上,向目标类织入增强代码。
- AOP基于动态代理实现,动态代理有基于接口的JDK动态代理,和基于子类的CGLib动态代理。
3. Spring MVC的工作流程是什么?
- SpringMVC接收请求,交给DispatcherServelet前端控制器。
- 前端控制调用HandlerMapping映射处理器处理请求,返回给前端控制器。
- 前端控制器根据解析结果调用Controller对应的方法,方法执行相关逻辑后返回ModelAndView。
- 前端控制器将数据模型和视图传给ViewResolver视图解析器,视图解析器根据名称找到对应的View,将Model填入View渲染成最终页面。
- 前端控制器以最终页面响应请求。
4. Spring如何解决循环依赖?
- 使用三级缓存解决。
5. Spring一个接口多次修改数据库怎么保证全部都完成或者全部都失败?
- 使用Spring 事务。