DerekYRC
DerekYRC
> 作者可以考虑下mini-sprintboot吗? 后续有可能。springboot基于spring,原理性的东西主要看spring,个人觉得springboot最大的改进是为了方便使用引入了自定义的SPI(Service Provider Interface)。 不过优先实现简化版的spring mvc,立个flag,等到本项目达到 1k star时开始写mini-springmvc。
> 写得不错!!!获益匪浅,催更催更 目前还差类型转换和解决循环依赖两节,近期会实现。不过还在纠结实现哪一套类型转换机制,spring中有两套类型类型转换机制,一套老的一套新的,偏向于新的。
> 中文版的文档怎么看不了 😢 不会啊,打开https://github.com/DerekYRC/mini-spring/blob/main/changelog.md
> 大佬,AOP那块可以详细讲讲吗?感觉那个地方的类非常多,不理解为什么要那么设计。 AOP这块可以多花点时间看看。主流程比较简单,判断哪些类的哪些方法需要代理,然后进行代理,代理只是在JDK动态代理的基础上简单套了一层。aspectJ提供的切点表达式工具,用于捕获需要代理的类的方法。要熟悉JDK动态代理的原理,可先不看cglib代理。至于类多的问题,因为spring要遵循AOP联盟制定的规范,需要实现相关的接口,可不必关注。
> 大佬spring MVC和spring ORM都可以考虑下 不是什么大佬了,小开发一个。后续计划写mini-springmvc。
> 事务实现这块可以补充下吗,谢谢大佬 不是什么大佬了,小开发一个。事务这块,没有深入研究事务传播行为的代码,但是如果实现spring的事务没有考虑是我传播行为的话就没有灵魂。我先记下,后续研究清楚考虑实现下。 我简单讲下spring事务的实现方式,主要看PlatformTransactionManager接口,有三个重要的方法,可以看为JDBC提供的的实现类DataSourceTransactionManager。 第一步调用getTransaction方法,获取到一个数据库的连接,然后绑定到当前线程(ThreadLocal), 第二步操作数据库,获取绑定到当前线程的数据库的连接,使用该连接操作数据库, 第三步,获取绑定到当前线程的数据库的连接,使用该连接commit或者rollback 第四步,归还该连接到连接池
> 老哥把这些加个链接吧 >  > 一看老哥就是讲究人,准备好好学习学习。 哈哈,没问题,记下了,有空改下。
> > > 作者可以考虑下mini-sprintboot吗? > > > > > > 后续有可能。springboot基于spring,原理性的东西主要看spring,个人觉得springboot最大的改进是为了方便使用引入了自定义的SPI(Service Provider Interface)。 > > 不过优先实现简化版的spring mvc,立个flag,等到本项目达到 1k star时开始写mini-springmvc。 > > 这就去点 星 谢谢
> 老哥,循环依赖有在写吗?没有在写的话,我想写一下,提个PR。 谢谢老哥,没想到真的有小伙伴看完,挺感动的!!! 为了方便理解,循环依赖部分的内容我会拆成两小节来讲解: 1、没有代理对象的循环依赖 2、有代理对象的循环依赖 第一小节的功能代码已经写好了,待补充changelog,再提交代码。 这周末会全部完成两小节,你可以帮忙review代码补充下。
> > > 老哥,循环依赖有在写吗?没有在写的话,我想写一下,提个PR。 > > > > > > 谢谢老哥,没想到真的有小伙伴看完,挺感动的!!! > > 为了方便理解,循环依赖部分的内容我会拆成两小节来讲解: > > 1、没有代理对象的循环依赖 > > 2、有代理对象的循环依赖 > > 第一小节的功能代码已经写好了,待补充changelog,再提交代码。 > > 这周末会全部完成两小节,你可以帮忙review代码补充下。 > > 坐等老哥代码,哈哈哈 老哥,代码提交了,帮忙review下。