1.Spring中的@Transsactional什么时候会失效?
方法修饰符不是public
Transsactional属性设置错误
调用方法没有事务,方法内部方法有事务的时候事务会失效
方法内部错误被catch
数据库搜索引擎不支持事务
2.Spring容器启动流程
创建Spring容器
扫描得到所有的BeanDefintion对象
筛选单利BeanDefintion对象
用例BeanDefintion对象创建Bean,构造方法、实例化、属性填充、初始化前、初始化后
所有的单利BeanDefintion对象创建完成后,Srping发布容器启动事件
3.Spring用到的设计模式
工厂模式、适配器模式、访问者模式、代理模式、观察者模式、模板模式、委派模式
4.SpringMVC底层工作原理
用户发送一个请求至前端控制器DispatcherServlet
DispatcherServlet收到请求调用处理器映射器HandlerMapping
处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet
DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作
执行处理器Handler(Controller,也叫页面控制器)
Handler执行完成返回ModelAndView到HandlerAdapter
HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
DispatcherServlet``将ModelAndView传给ViewReslover视图解析器
ViewReslover解析后返回具体View
DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)
DispatcherServlet响应用户
5.Mybatis优缺点
优点:
基于SQL语句编程,sql单独编写,解除sql语言和程序的耦合,sql语句统一管理
和JDBC相比,不需要手动开启和关闭连接,减少重复代码
Mybatis使用JDBC来连接数据库,能够很好兼容各种数据库
能够和Spring很好的集成
提供映射标签,支持对象和数据库字段映射
缺点:
sql语句编写量大,需要很好的SQL编写能力
sql语句依赖数据库,使数据库不能随便修改更换
6.Mybatis中#{}和${}区别
#{}是预编译处理,是占位符,${}是字符串替换
#{}会替换成?,然后赋值
${}会替换成变量值
#{}可以有效防止SQL注入,提高系统安全性