zoukankan      html  css  js  c++  java
  • 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语言之类的。

    【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
  • 相关阅读:
    linux service 例子
    YII2自动初始化脚本
    ubuntu 如何在命令行打开当前目录
    mysql 储存过程
    Mysql 随笔记录
    Lack of free swap space on Zabbix server
    意外发现PHP另一个显示转换类型 binary
    常用的排序代码
    线程的实现方式之内核支持线程和用户级线程
    寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/15755079.html
Copyright © 2011-2022 走看看