spring面试题+答案
SpringMVC的流程 |
1、用户发送请求至前端控制器【DispatcherServlet】 2、前端控制器【DispatcherServlet】收到请求调用处理器映射器【HandlerMapping】 3、处理器映射器【HandlerMapping】找到具体的处理器【Handler】,生成处理器对象返回给前端控制器【DispatcherServlet】 4、前端控制器【DispatcherServlet】调用处理器适配器【HandlerAdapter】 5、处理器适配器【HandlerAdapter】经过适配调用具体的处理器 6、Controller执行完成返回ModelAndView 7、处理器适配器【HandlerAdapter】将controller执行结果ModelAndView返回给前端控制器【DispatcherServlet】 8、前端控制器【DispatcherServlet】将ModelAndView传给视图解析器【ViewReslover】 9、视图解析器【ViewReslover】解析后返回具体View. 10、前端控制器【DispatcherServlet】根据View进行渲染视图 11、前端控制器【DispatcherServlet】响应用户 |
|
IOC:控制反转 |
优点:避免在各处使用new创建类,并且可以统一维护;创建实例的时候不需要了解其中得细节 |
|
IOC容器机制 |
首先读取Bean配置信息到Bean定义注册表,根据Bean注册表实例化Bean;将Bean实例放到Spring容器中(Bean缓存池),并建立Bean之间的使用关系,最后应用程序使用Bean |
|
springbean的生命周期 |
创建过程:实例化bean对象,设置bean属性;通过aware注入bean,调用BeanPostProcessor的前置化初始化方法,对注入的bean添加一些自定义的业务逻辑,如果实现了InitializingBean接口,则执行afterPropertiesSet方法;然后调用bean自身定义的init方法,做初始化的相关工作;调用BeanPostProcessor的后置化初始化方法,做一些bean初始化之后的自定义工作 销毁过程:如果实现了DisposableBean接口,则会调用destroy方法;如果配置了destry-method属性,则会调用其配置的销毁方法 |
|
AOP |
关注点分离:不同的问题交给不同的部分去解决 面向切面编程AOP正是此种技术的体现 通用化功能代码的实现,对应的就是所谓的切面(aspect) 业务功能代码和切面代码分开后,架构将变得高内聚低耦合 确保功能的完整性,切面最终需要被合并到业务中(weave) |
|
拦截器和过滤器的区别 |
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑 |
|
Mybatis中的 ${} 和 #{}区别与用法 |
#{}方式能够很大程度防止sql注入。#{}这种 |
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
针对Java简历中项目的功能进行提问,大家可以在评论区中解答/讨论;同时提供八股文