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之项目解析+八股文 文章被收录于专栏

针对Java简历中项目的功能进行提问,大家可以在评论区中解答/讨论;同时提供八股文

全部评论

相关推荐

6 40 评论
分享
牛客网
牛客企业服务