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的声明事务配置方式
注解元数据驱动的声明式事务