一.Mybatis运行原理
1.当Mybatis运行开始时,先通过Resources工具类加载核心配置文件,之后通过XMLConfigBuilder对配置文件进行解析,将解析的结果封装为Configuration对象,再将Configuration作为参数构建DefaultSqlSessionFactory对象,至此工厂对象创建完毕。
2.接下来通过工厂对象调用openSession()的方法创建SqlSession对象,在这个过程中需要通过TransactionFactory生成Transaction对象,以及生成核心执行器Executor对象,再通过这些对象构建DefaultSqlSession对象,至此SqlSession对象构建完毕。
3.之后通过SqlSession对象执行相应的操作,如果操作成功调用commit提交事务,如果操作失败调用rollback回滚事务。
4.最后调用close关闭session资源。
项目架构:
二.Servlet运行原理
1:浏览器发送一个HTTP请求给服务器(get方式或者为post方式)
2:服务器内部会根据url判断请求的Servlet,并产生两个对象ServletRequest请求对象和ServletResponse响应对象
3:开辟一个线程处理本次请求,将产生的对象传入线程中
4:调用对应的Servlet中的service方法,如果我们自定义的Servlet重写了service方法会直接执行service方法,如果没有重写则会调用父类的service方法(先调用的是service(ServletRequest req,ServletResponse resp)方法将req,resp强转为HttpServletRequest和HttpServletResponse对象,再调用service(HttpServletRequest req,HttpServletResponse resp)方法)
5:父类的service方法会根据请求的方式调用对应的doGet()或doPost()方法,此时因为多态实际上我们调用的是我们自定义Servlet中重写的doGet和doPost方法,如果没有重写会调用父类的相应的方法返回错误信息
6:服务器将结果响应给浏览器,本次请求结束
三:Spring运行原理:
Spring工作原理
内部最核心的就是IOC了, 动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。
Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的模块)
从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。
Spring的运行流程是什么
Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,最后将实例化好的Beab对象放在Spring容器中,为上 层应用提供准备就绪的运行环境.
项目架构:
四.SpringMVC工作原理
1.用户发送请求至前端控制器DispatcherSerlet.
2.DispatcherServilet收到请求调用HandlerMapping处理器映射器.
3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找), 生产处理器对象及拦截器(如果有则生成)一并返回给DisparcherServlet.
4.DispatcherServlet调用HandlerAdapeter处理器适配器.
5.HandlerAdapter结果适配调用具体的处理器(Controller, 也叫后端控制器, 是通过请求查询路径的)
6.Controller执行完成返回Model
7.HandlerAdapter将Controller执行结果通过Model返回给DispatcherServlet
8.DispatcherServlet将Model传给ViewReslover试图解析器
9.ViewReslover解析后返回具体View
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充置视图中).
11.DispatcherServlet响应视图给用户
项目架构: