• 2022年第一天


      2021年很快的过去了,这一年发生了一些不少的事情,也明白了一些事情。

      2021年工作方面查看了一些框架的源码,包括spring、springmvc、springcloud、netty、mybatis、shiro、xxl-job 等框架源码,理解程度80%吧。 通过阅读源码,大致了解到每个框架的设计原则以及基于spring扩展组件的大体思路-在对象后置处理器或者对象工厂后置处理器做一些操作,动态的向容器注册一些bean。 

      spring 核心的ioc、aop 等源码,也包括对象的生命周期。 ioc的开始是在对象工厂的refresh 方法,对于springboot 项目,默认的对象工厂是org.springframework.context.annotation.AnnotationConfigApplicationContext , 在启动过程中调用refresh 会调用到父类org.springframework.context.support.AbstractApplicationContext#refresh 开始其IOC的过程。 refresh 方法中finishBeanFactoryInitialization 会调用getBean生成所有非lazy 的单例对象,也就是对象的生命周期开始进行。其中IOC 重要的一步是生成BeanDefinition 对象,然后最后遍历BeanDefinition 对象,生成bean缓存到map 中。 AOP实际是在对象的后置处理器判断是否有适用的AOP MethodInteceptor(org.aopalliance.intercept.MethodInterceptor), 如果有则生成代理对象,代理对象需要维护一个org.springframework.aop.framework.CglibAopProxy.DynamicAdvisedInterceptor, 以这里为入口进行AOP。其实对于AspectJ 语法的AOP, 也是走的Spring 的AOP机制(基于MethodIntecepor、Pointcut、PointcutAdvisor),只不过是封装成AspectJ 特有的相关Bean, 参考: org.springframework.aop.aspectj.AspectJExpressionPointcut。 

      其他像SpringMVC、OpenFeign、Shiro、xxl-job 等都是利用Spring 的可扩展性进行操作,都是在对象后置处理器或者对象工厂后置处理器,拦截带有指定注解的Bean, 生成代理对象注入到容器中,代理对象中做相关的业务逻辑。

      2021年生活方面报了一个培训班,很感谢培训班的每一位同学对自己的肯定,和他们在一起学习真的没有任何压力,仿佛回到大学时期。接下来,自己也会定期复习自己在培训班学习的内容。

      2022 年自己还有好多要学的,主要是kafka、rocketmq、k8s 三大块的学习任务。剩下就是再多学习一些Java 之外的go语言之类的。

    【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
  • 相关阅读:
    如何把项目部署到OSChina上
    读书笔记----10日摘抄整理(05)
    读书笔记----10日摘抄整理(04)
    读书笔记----10日摘抄整理(03)
    读书笔记----10日摘抄整理(02)
    读书笔记----10日摘抄整理(01)
    前五题半
    作业3
    作业: 1.8(圆的面积和周长)编写程序,使用以下的公式计算并显示半径为5.5的圆的面积和周长。
    作业:1.12假设一个跑步者1小时40分钟35秒 内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值(注意,1英里等于1.6公里。)
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/15755079.html
Copyright © 2020-2023  润新知