@EnableXXX原理:注解上有个XXXRegistrar,或通过XXXSelector引入XXXRegistrar,XXXRegistrar实现了 
ImportBeanDefinitionRegistrar的registerBeanDefinitions方法,给容器注册XXXCreator。这个Creator实现了后置处理器, 
后置处理器在对象创建以后,包装对象,返回一个代理对象,代理对象执行方法利用拦截器链进行调用

* 1)、@EnableTransactionManagement
* 利用TransactionManagementConfigurationSelector给容器中会导入组件
* 导入两个组件
* AutoProxyRegistrar
* ProxyTransactionManagementConfiguration
* 2)、AutoProxyRegistrar:
* 给容器中注册一个 InfrastructureAdvisorAutoProxyCreator 组件;
* 利用后置处理器机制在对象创建以后,包装对象,返回一个代理对象(增强器),代理对象执行方法利用拦截器链进行调用;
* 3)、ProxyTransactionManagementConfiguration是个@Configuration
* 1、给容器中注册事务增强器transactionAdvisor;
* 1)、事务增强器要用事务注解的信息,AnnotationTransactionAttributeSource解析事务注解
* 2)、事务拦截器transactionInterceptor:
* TransactionInterceptor;保存了事务属性信息,事务管理器;
* TransactionInterceptor是一个 MethodInterceptor;
* 在目标方法执行的时候;
* 执行拦截器链;
* 只有事务拦截器:
* 1)、先获取事务相关的属性
* 2)、再获取PlatformTransactionManager,如果事先没有添加指定任何transactionmanger
* 最终会从容器中按照类型获取一个PlatformTransactionManager;
* 3)、执行目标方法
* 如果异常,获取到事务管理器,利用事务管理回滚操作;
* 如果正常,利用事务管理器,提交事务

最新文章

  1. linux下查看进程状态
  2. log4net 配置
  3. ExtJs 使用点滴 十四 通过设置CheckboxSelectionModel属性值来实现GridPanel复选框可用不可用
  4. gnuplot 学习笔记
  5. tachyon 配置项
  6. bzoj 3732 Network(最短路+倍增 | LCT)
  7. devexpress中gridview控件编辑时改变输入法状态
  8. SQL SERVER大数据分页
  9. 【C++第二课】---C到C++的函数升级
  10. linux命令之mv
  11. C++之static_cast, dynamic_cast, const_cast
  12. 51nod_1253:Kundu and Tree(组合数学)
  13. mock.js的真实数据模拟
  14. APP手机端加载不到资源服务器后台解决参考
  15. MapReduce的工作原理
  16. docker容器日志收集方案汇总评价总结
  17. JAVA实训第二次作业
  18. python学习----IO模型
  19. JS中使用时间戳,获取当前日期,计算前一周的日期~
  20. Caused by: java.io.FileNotFoundException: class path resource [spring/springmvc.xml] cannot be opene

热门文章

  1. Luogu 2939 [USACO09FEB]改造路Revamping Trails && Luogu 4568 [JLOI2011]飞行路线
  2. jquery 仿文本编辑器(智能提示输入文字)
  3. 选择设置好ext3日志模式
  4. MVC5中的路由
  5. 使用metasploit进行栈溢出攻击-5
  6. Total Commander的初次体验
  7. Unity自带IAP插件使用(googleplay)
  8. 转载JAVA八大经典书籍,你看过几本?
  9. Linux开机自动挂载文件fstab介绍
  10. P3943 星空 区间异或差分