
阅读源码
const伐伐
这个作者很懒,什么都没留下…
展开
-
@RabbitListener源码解析
参考:Spring整合rabbitmq实践(三):源码-@RabbitListener实现过程rabbitmq consumer push模式还是pull模式 参考朱忠华老师 RabbitMQ之Consumer消费模式(Push & Pull)为什么一个普通的方法加上@RabbitListener注解就能接收消息了呢?先总结来说,有一个BeanPostProcessor来处理这...原创 2019-02-01 10:58:45 · 12394 阅读 · 4 评论 -
spring ioc容器创建与bean初始化源码解析3:注册BeanPostProcessor(作用在bean创建的过程中进行拦截,从而执行指定逻辑)
6. registerBeanPostProcessors(beanFactory);注册拦截bean创建的 bean processors注册BeanPostProcessor(Bean的后置处理器)来intercept bean creationBeanPostProcessor类图DestructionAwareBeanPostProcessorInstanti...原创 2019-06-25 18:15:39 · 301 阅读 · 0 评论 -
spring ioc容器创建与bean初始化源码解析4:初始化MessageSource ApplicationEventMulticaster ApplicationListener
7. initMessageSource();初始化MessageSource组件(做国际化功能,消息绑定,消息解析);// Initialize message source for this context.initMessageSource();7.1 获取BeanFactory7.2 看容器中是否有id为messageSource的,类型是MessageSource...原创 2019-06-25 19:39:38 · 263 阅读 · 0 评论 -
spring中事件驱动开发:ApplicationListener及ApplicationEventMulticaster的使用
spring中事件驱动开发spring中是通过ApplicationListener及ApplicationEventMulticaster来进行事件驱动开发的,即实现观察者设计模式或发布-订阅模式。ApplicationListener监听容器中发布的事件,只要事件发生,就触发监听器的回调,来完成事件驱动开发。属于观察者设计模式中的Observer对象。ApplicationE...原创 2019-06-25 19:20:38 · 8163 阅读 · 2 评论 -
spring ioc容器创建与bean初始化源码解析2:在beanFactory容器初始化之后定制和修改BeanFactory内容
5. invokeBeanFactoryPostProcessors(beanFactory);执行BeanFactoryPostProcessor的方法(在上下文中调用注册为bean的factory processors)BeanFactoryPostProcessor:(这个接口在之前了解过spring中BeanDefinitionRegistryPostProcessor的作用...原创 2019-06-25 17:59:43 · 323 阅读 · 0 评论 -
spring ioc容器创建与bean初始化源码解析1:beanFactory容器的创建及初始化
spring容器创建及bean初始化过程分为6个部分1.beanFactory容器的创建及初始化2.在beanFactory容器初始化之后定制和修改BeanFactory内容3.注册BeanPostProcessor(作用在bean创建的过程中进行拦截,从而执行指定逻辑)4.初始化MessageSource ApplicationEventMulticaster App...原创 2019-06-25 16:14:54 · 464 阅读 · 0 评论 -
mybatis-plus逻辑删除功能源码解析
逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。如果你需要再查出来就不应使用逻辑删除,而是以一个状态去表示。如: 员工离职,账号被锁定等都应该是一个状态字段,此种场景不应使用逻辑删除。若确需查找删除数据,如老板需要查看历史所有数据的统计汇总信息,请单独手写sql。那么用户注销App是不是应该使用逻辑删除呢?因为userId在很多表中都是外键,...原创 2019-06-04 09:55:21 · 4346 阅读 · 0 评论 -
mybatis-plus的sql注入器实现自定义全局sql操作原理解析
自定义自己的通用方法可以实现接口ISqlInjector,也可以继承抽象类 AbstractSqlInjector。注入通用方法 SQL 语句,然后继承 BaseMappe添加自定义方法,全局配置sqlInjector 注入 MP会自动将类所有方法注入到 mybatis 容器中。比如说我想在全局添加一个逻辑删除方法,我不希望给每个Mapper添加这个方法,而是希望像BaseMapper这样...原创 2019-06-04 09:24:42 · 6359 阅读 · 1 评论 -
spring aop源码解析3: 代理对象执行过程分析--构造拦截器链及触发拦截器链
接上一篇spring aop源码解析2: AnnotationAwareAspectJAutoProxyCreator拦截切点bean(join point)创建过程并生成proxy(在切点织入切面)的过程继续6. 代理对象执行过程分析1--构造拦截器链是如何实现先执行@Before,然后proceed,然后@After 然后@AfterReturning这样的顺序执行过程的呢?...原创 2019-06-13 14:50:50 · 682 阅读 · 0 评论 -
spring aop源码解析2: AnnotationAwareAspectJAutoProxyCreator拦截切点bean(join point)创建过程并生成proxy(在切点织入切面)的过程
接上一篇spring aop源码解析1: 创建、初始化并注册AnnotationAwareAspectJAutoProxyCreator继续现在我们在容器中已经有了AnnotationAwareAspectJAutoProxyCreator这个BeanPostProcessor,那么之后我们再创建bean的时候,都会经过AnnotationAwareAspectJAutoProxyCreato...原创 2019-06-13 14:37:52 · 713 阅读 · 0 评论 -
spring aop源码解析1: 创建、初始化并注册AnnotationAwareAspectJAutoProxyCreator
spring aop的源码解析内容比较多,准备分为三个部分:1. 创建、初始化并注册AnnotationAwareAspectJAutoProxyCreator2. AnnotationAwareAspectJAutoProxyCreator拦截切点bean(join point)创建过程并生成proxy(在切点织入切面)的过程3. 代理对象执行过程分析--构造拦截器链及触发拦截器链...原创 2019-06-13 14:23:39 · 1721 阅读 · 0 评论 -
spring中事务Transaction(@EnableTransactionManager @Transactional)实现机制源码解析
先提出几个问题1. 为什么在spring中加入了@EnableTransactionManagement就会开启事务支持呢?2. @EnableTransactionManagement与@Transactional是如何配合以实现事务效果的呢?3. spring中的方法与mysql中真正的事务执行语句是如何对应起来的?1. @EnableTransactionManagement...原创 2019-06-05 20:50:27 · 3742 阅读 · 0 评论 -
mybatis-plus 分页插件 执行分析插件 性能分析插件 乐观锁插件的基本实现原理
分页插件PaginationInterceptor其原理与mybatis插件的创建没有区别。1. PaginationInterceptor,implements Interceptor2. 使用@Intercepts注解完成插件签名@Intercepts({@Signature(type = StatementHandler.class, method = "prepare",...原创 2019-05-31 10:08:33 · 5999 阅读 · 0 评论 -
spring启动时mybatis-plus注入sql源码解析
MP在spring启动就会挨个分析xxxMapper中的方法,并且将对应的SQL语句处理好,保存到configuration对象中的mappedStatements中。首先,在contextApplication.xml文件中配置的sqlSessionFactory配置的是mybatisplus的MyBatisSqlSessionFactoryBean,其implementsAppl...原创 2019-05-31 09:49:42 · 1552 阅读 · 0 评论 -
mybatis插件开发原理及方法
MyBatis在四大对象的创建过程中,都会有插件进行介入。interceptorChain.pluginAllpublic Object pluginAll(Object target) { for (Interceptor interceptor : interceptors) { target = interceptor.plugin(target);...原创 2019-05-27 15:21:44 · 311 阅读 · 0 评论 -
mybatis参数封装Map过程的源码解析
过程是这样的:在MyBatisTest中调用interface mapperEmployee employee = mapper.getEmpByIdAndLastName(1, "tom");在com.hfi.dao.EmployeeMapper#getEmpByIdAndLastName方法中Employee getEmpByIdAndLastName(@Param("...原创 2019-05-17 17:35:57 · 1207 阅读 · 2 评论 -
mybatis查询过程的源码分析
参考:咕泡学院的mybatis源码分析及手写实现教程1. 运行hello world,提出问题先自己运行一个demo,以mybatis为例,需要sqlsession,需要mapper,为什么需要呢?2. 看设计文档,看模块划分,理解大局需要看其design设计文档或先从模块上来看,大局上是什么样的,之后再跟进去看看其架构设计图,看其是如何设计其系统的如果没有架构设计图,那么...原创 2019-05-17 10:45:58 · 494 阅读 · 0 评论 -
spring ioc容器创建与bean初始化源码解析5:初始化所有剩余未初始化的单实例bean及最终完成容器创建
11. finishBeanFactoryInitialization(beanFactory);初始化所有剩下的(因为之前的BeanPostProcessor Bean可能已经在前面初始化了)单实例bean;// Instantiate all remaining (non-lazy-init) singletons.finishBeanFactoryInitialization...原创 2019-06-26 10:36:23 · 591 阅读 · 0 评论