
Spring 事务、异步和循环依赖有什么关系?
通过自注入示例比较事务、异步与循环依赖的代理行为和差异。
38 篇相关内容

通过自注入示例比较事务、异步与循环依赖的代理行为和差异。

逐步分析动态代理场景下的循环依赖,并说明二级缓存不足与三级缓存的作用。

从循环依赖示例和调试过程,解释 Spring 创建 Bean 时解决循环依赖的步骤。

跟踪 getSingleton、createBean、doCreateBean 和 getObjectForBeanInstance,解释单例 Bean 的创建缓存过程。

围绕 FactoryBean、预实例化单例和 getBean 调用链,分析 finishBeanFactoryInitialization。

从事件注册与监听示例出发,说明 initApplicationEventMulticaster、onRefresh 和 registerListeners。

通过国际化文件和 MessageSource 示例,说明 initMessageSource 的初始化过程。

介绍 BeanPostProcessor 的用途,并跟踪 registerBeanPostProcessors 注册处理器的源码流程。

从示例和源码出发,梳理 BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor 与 invokeBeanFactoryPostProcessors。

结合调试过程解释 prepareBeanFactory 和 postProcessBeanFactory 在 Spring 容器初始化中的作用。

概览 Spring refresh 容器刷新流程,重点说明刷新准备和 obtainFreshBeanFactory。

跟踪配置类注册入口 doRegisterBean 的源码和调试结果。

分析 ClassPathBeanDefinitionScanner 的默认过滤器、环境与资源加载器设置。

跟踪 AnnotatedBeanDefinitionReader 注册注解处理器的源码,并用调试验证调用关系。

介绍 BeanDefinition 的概念、元数据接口、AbstractBeanDefinition 及其实现类。

从入口和构造函数开始,说明 Spring 容器启动时 DefaultListableBeanFactory 的初始化。

比较 Java、XML、Groovy 和 GenericApplicationContext 创建 Spring IoC 容器的方式。

用 IoC、DI、Container 和 Bean 的概念,建立 Spring 容器与 Bean 管理的基础认识。

记录 Spring 源码学习环境的准备、源码下载、测试执行与常见编译问题排查。

通过 CopyOnWriteArrayList 的源码,说明写时复制数组、读写锁以及 add、remove、get 的实现取舍。

结合基本使用和源码,梳理 ConcurrentLinkedQueue 的单向节点、CAS 入队出队与无界线程安全特性。

对比 ArrayBlockingQueue,分析 LinkedBlockingQueue 的链表节点、双锁结构和阻塞操作。

在 AQS 和 ReentrantLock 基础上,解释 Condition 条件队列、await、signal 以及锁释放与重新获取过程。

结合生产者消费者示例,梳理 ArrayBlockingQueue 的数组结构、锁、条件队列和阻塞操作。

从许可数量和基本示例出发,说明 Semaphore 基于 AQS 的初始化、acquire、release 与公平策略。

介绍 CyclicBarrier 的回环屏障、Runnable、await、reset 和它与 CountDownLatch 的区别。

通过示例和源码说明 CountDownLatch 的计数、countDown、await 以及 AQS 关系。

介绍 StampedLock 的写锁、读锁和乐观读三种模式、stamp 生命周期,以及它与 ReentrantReadWriteLock 的区别。

解释 ReentrantReadWriteLock 的公平策略、读写重入、锁降级、Condition 及读锁写锁的状态编码。

围绕 AQS、state、可重入、公平与非公平策略,梳理 ReentrantLock 的加锁、tryLock 和解锁源码。

结合源码和队列图,梳理 AQS 的 Node 状态、独占与共享模式、入队、取消、唤醒及资源释放流程。

从许可模型和验证实验出发,解释 LockSupport 的 park、unpark、阻塞诊断与源码实现。

结合 Striped64 和 Cell 源码,说明 LongAdder 如何通过分散竞争提升高并发累加性能。

从用户信息保存示例出发,跟踪 ThreadLocal、ThreadLocalMap、弱引用和 remove 的实现。

从乐观锁和 AtomicInteger 的使用出发,结合 JUC 源码解释 CAS、Unsafe 与原子更新的关系。

先介绍红黑树的性质、旋转和插入,再说明 HashMap 链表转红黑树及相关节点操作。

沿着 HashMap 的 put 流程,说明哈希定位、链表或红黑树处理、容量阈值与 resize 扩容。

解释 HashMap 初始容量和负载因子、tableSizeFor 的二次幂计算,以及 key 哈希和数组下标定位。