《Spring技术内幕》读书笔记

IOC与AOP原理

IOC容器的初始化过程

BeanDefinition的Resource定位

BeanDefinition的载入与解析

BeanDefinition在IOC容器中的注册

IOC容器的依赖注入

lazy-init

FactoryBean

BeanPostProcessor: init-method, destory-method

autowiring: autowire_by_name  autowire_by_type

Bean的依赖检查: dependency-check(可选值none,simple,object,all)

Spring AOP的设计与实现

应用场景:  设计应用的横切关注点,把跨越应用程序多个模块的功能抽象出来,比如日志;Spring内部的一些模块也使用AOP实现,比如事务处理.

JDK的Proxy生成代理对象--设置InvokeHandler来设置拦截器完成回调.

CGLIB生成代理对象--通过AdvisedInterceptor来完成回调.

Spring AOP拦截器的设计与实现

待填坑...

Spring事务管理的实现

1-3节介绍Spring事务管理实现的几个重要接口或类,之后介绍事务管理的使用注意

1. TransactionDefinition 指定事务属性

编程式事务:

TransactionDefinition -> DefaultTransactionDefinition -> TransactionTemplate

声明式事务: 

TransactionDefinition -> TransactionAttribute -> DefaultTransactionAttribute -> RuleBasedTransactionAttribute/ DelegatingTransactionAttribute

2. TransactionStatus 整个事务处理过程中的事务状态

SavepointManager -> TransactionStatus -> AbstractTransactionStatus -> DefaultTransactionStatus/ SimpleTransactionStatus

TransactionStatus拥有管理Savepoint的能力,从而支持创建内部嵌套事务.

3. PlatformTransactionManager 开启事务等(Strategy模式)

3.1 面向局部事务的实现类

JDBC/iBATIS  DataSourceTransactionManager

Hibernate  HibernateTransactionManager

3.2 面向全局事务的实现类

JtaTransactionManager

3.3 DataSourceTransactionManager的实现

几个概念:

transaction object

TransactionSynchronization

TransactionSynchronizationManager

4. Spring事务管理的使用

4.1 编程式事务

两种使用方法: 直接使用PlatformTransactionManager以及使用TransactionTemplate

两种在TransactionCallback或者TransactionCallbackWithoutResult的操作过程中回滚的方式: 抛出unchecked exception或者将TransactionStatus标记为rollBackOnly.

4.2 声明式事务

使用ProxyFactory(ProxyFactoryBean) + TransactionInterceptor

使用一站式的TransactionProxyFactoryBean

使用BeanNameAutoProxyCreator

使用Spring 2.x的声明事务配置方式

注解元数据驱动的声明式事务

原文地址:https://www.cnblogs.com/cheungchein/p/8625396.html