栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【无标题】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】

面试题

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

面试题1. 什么是IOC容器(说说你对spring IOC的理解)2. Spring IOC容器是如何创建一个对象的?有哪些生命周期方法?3. 什么是AOP?4. Spring是如何实现AOP的?BeanPostProcessor?5.什么是数据库事务?Spring中如何实现事务控制?6.Mybatis 中 ,# 和 $ 的区别?什么是sql注入?如何防止?7.SpringMVC的 DispatcherServlet的工作原理描述一下。

提示:以下是本篇文章正文内容,下面案例可供参考

1. 什么是IOC容器(说说你对spring IOC的理解)

SpringIOC负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期)

2. Spring IOC容器是如何创建一个对象的?有哪些生命周期方法?

Spring创建对象的方式:

通过有参构造

通过下标
通过参数名 【推荐】
通过参数类型

通过无参构造

默认会用无参构造

① 通过构造器或者工厂方法创建bean实例
② 为bean的属性设置值和对其他bean的引用
③ 调用bean的初始化方法
④ 使用bean
⑤ 当容器关闭时,调用bean的销毁方法

3. 什么是AOP?

AOP是面向切片编程.在运行时,动态的将代码切入到类的指定方法中,指定位置上的编程思想就是面向切面的编程,以达到优化代码,减少重复代码的目的.

4. Spring是如何实现AOP的?BeanPostProcessor?

AOP可以有多种实现方式,而Spring AOP支持如下两种实现方式。

JDK动态代理:这是Java提供的动态代理技术,可以在运行时创建接口的代理实例。Spring AOP默认采用这种方式,在接口的代理实例中织入代码。

CGLib动态代理:采用底层的字节码技术,在运行时创建子类代理的实例。当目标对象不存在接口时,Spring AOP就会采用这种方式,在子类实例中织入代码。

5.什么是数据库事务?Spring中如何实现事务控制?

事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。

事务必须有四种属性:原子性,一致性,隔离性,持久性。

Spring实现事务控制
编程式事务管理
声明式事务管理
基于xml配置文件方式
基于注解方式

6.Mybatis 中 ,# 和 $ 的区别?什么是sql注入?如何防止?

#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 20: …符串替换 Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值
使用#{}可以有效的防止SQL注入,提高系统的安全性

SQL 注入其实就是恶意用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常 规代码的过程

7.SpringMVC的 DispatcherServlet的工作原理描述一下。

Tomcat 启动,对 DispatcherServlet 进行实例化,然后调用它的 init() 方法进行初始化,在这个初始化过程中完成了:对 web.xml 中初始化参数的加载;建立 WebApplicationContext (SpringMVC的IOC容器);进行组件的初始化;
客户端发出请求,由 Tomcat 接收到这个请求,如果匹配 DispatcherServlet 在 web.xml 中配置的映射路径,Tomcat 就将请求转交给 DispatcherServlet 处理;
DispatcherServlet 从容器中取出所有 HandlerMapping 实例(每个实例对应一个 HandlerMapping 接口的实现类)并遍历,每个 HandlerMapping 会根据请求信息,通过自己实现类中的方式去找到处理该请求的 Handler (执行程序,如Controller中的方法),并且将这个 Handler 与一堆 HandlerInterceptor (拦截器) 封装成一个 HandlerExecutionChain 对象,一旦有一个 HandlerMapping 可以找到 Handler 则退出循环;(详情可以看 [Java]SpringMVC工作原理之二:HandlerMapping和HandlerAdpater 这篇文章)
DispatcherServlet 取出 HandlerAdapter 组件,根据已经找到的 Handler,再从所有 HandlerAdapter 中找到可以处理该 Handler 的 HandlerAdapter 对象;
执行 HandlerExecutionChain 中所有拦截器的 preHandler() 方法,然后再利用 HandlerAdapter 执行 Handler ,执行完成得到 ModelAndView,再依次调用拦截器的 postHandler() 方法;
利用 ViewResolver 将 ModelAndView 或是 Exception(可解析成 ModelAndView)解析成 View,然后 View 会调用 render() 方法再根据 ModelAndView 中的数据渲染出页面;
最后再依次调用拦截器的 afterCompletion() 方法,这一次请求就结束了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号