![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
手写框架系列
文章平均质量分 67
手写实现ssm和tomcat核心功能,并使用自己手写的框架完成一个简单的web项目
qq_44993268
这个作者很懒,什么都没留下…
展开
-
手写框架专栏:实现tomcat和ssm框架核心功能
手写一个基于BIO的Java服务器手写spring框架预备知识:三级缓存解决循环依赖问题手写spring框架预备知识:责任链模式解决cglib多重代理问题手写spring框架:实现ioc和aop功能;使用三级缓存解决循环依赖问题手写springmvc框架:整合手写的spring和服务器,实现前后端的请求处理和视图渲染手写mybatis框架:完成对数据库的增删改查操作手写框架项目预备知识:整合spring和mybatis手写框架项目:实现基本的crud和自定义aop切面功能原创 2023-06-23 13:27:45 · 82 阅读 · 0 评论 -
手写一个基于BIO的Java服务器
在启动类中初始化配置信息和线程池信息,然后创建ServerSocket并使用socket.accept()阻塞等待http请求。原创 2023-06-12 16:21:25 · 164 阅读 · 0 评论 -
手写一个基于netty的tomcat服务器:附压测对比
这里需要将netty封装的request信息转为自己的request类。注意netty在处理http请求的时候会拆分成请求头和请求头来分批处理,所以在处理完请求头信息后需要将解析到的request与channel绑定,使得处理请求头的时候可以得到当前的request,具体的封装逻辑可以参考源码。与之前的OutputStream流不同,netty中使用的是channel来传输数据,且需要使用到netty自己的请求头信息,所以需要更改响应数据的函数。可以看到使用netty后吞吐量和响应时间都有了提升。原创 2023-06-27 16:35:38 · 254 阅读 · 0 评论 -
手写spring框架预备知识:三级缓存解决循环依赖问题
A依赖B,同时B又依赖A,且两者都没有提前创建好,如下图所示: 打破循环的原理在出现循环的时候提前将其中的一个对象创建好,并注入到另一个对象。spring中采用的三级缓存的来实现这个操作,除了三级缓存外还需要一个set来判断是否出现循环依赖,那么在spring中创建对象的流程如下: 可能有眼尖的小伙伴就能看出来,二级缓存有什么用呢?spring为了保证单例的特性,会尽量保证对象在最后一步再进行Aop的动态代理操作,但是在出现循环依赖时就不得不提前进行Aop原创 2023-06-15 17:17:10 · 92 阅读 · 0 评论 -
手写spring框架预备知识:责任链模式解决cglib多重代理问题
cglib在动态代理时,无法像jdk动态代理那样对代理对象再次执行代理。问题原理分析参考博客直接对bean进行反复代理和赋值即可。原创 2023-06-19 10:36:09 · 238 阅读 · 0 评论 -
手写spring框架:实现ioc和aop功能;使用三级缓存解决循环依赖问题
在main函数中注册自己,并添加ComponentScan注解。原创 2023-06-15 18:22:13 · 296 阅读 · 0 评论 -
手写springmvc框架:整合手写的spring和服务器,实现前后端的请求处理和视图渲染
手写springmvc需要引入之前手写的spring和服务器的依赖,由于整合过程中需要添加和修改一些功能,所以之前的博客代码可能稍有不同,但是整体思路是一致的,最新代码可以参考我放在文末的gitee地址。老规矩,只列出整个思路,具体代码参考源码地址。原创 2023-06-19 10:59:38 · 141 阅读 · 0 评论 -
手写mybatis框架:完成对数据库的增删改查操作
负责解析mapper对象为预处理对象PreparedStatement,并将传入的参数填补到占位符中,执行真正的sql语句,处理结果并返回。初始化配置类信息,获取sqlSession对象,从sqlSession中获取对应mapper的动态代理对象。在增强方法中解析方法的参数信息并找到对应的mapper类,然后调用执行器执行真正的sql语句并返回结果。保存配置文件信息,并初始化所有的mapper.xml,解析为java类。原创 2023-06-21 10:46:04 · 138 阅读 · 1 评论 -
手写框架项目预备知识:整合spring和mybatis
本文是手写框架实现web项目的前置文章,关于spring系列和mybatis的部分可以参考文章由于mybatis中并没有使用spring来管理自己的mapper类,而是用代理的方式动态的获取mapper对象,所以使用spring的依赖注入是无法获得mybatis生成的mapper对象的,需要提前交给spring管理。注意:整合过程中会对原来的框架进行一些细节上的修改,与博客有所出入,可以参考源码地址。由于这部分比较简单,就没有项目架构,直接贴代码和讲解了。原创 2023-06-23 12:51:18 · 62 阅读 · 0 评论 -
手写框架项目:实现基本的crud和自定义aop切面功能
预期目标已经完成了,本专栏也差不多告一段落了。写项目的时候遇到了各种各样的问题,需要反复去框架代码中进行修改,所以之前的博客代码难免会有不同的地方。原创 2023-06-23 13:06:32 · 69 阅读 · 0 评论