第六阶段 第二模块

第六阶段 第二模块_第1张图片
在程序启动期spring 就会去创建一些对象存储到ioc

第六阶段 第二模块_第2张图片

第六阶段 第二模块_第3张图片

image.png
会去找它对应的实现类
但是可能有多个实现类 所以要用qualifier来指定id来确定

第六阶段 第二模块_第4张图片
一开始如果为accountDao变量名就不会报错
这是因为它会去根据变量名去匹配id

第六阶段 第二模块_第5张图片

第六阶段 第二模块_第6张图片

第六阶段 第二模块_第7张图片

第六阶段 第二模块_第8张图片

image.png

image.png

第六阶段 第二模块_第9张图片
这两个方法是同一个线程

threadlocal key就是当前线程 value为它这个线程存储的数据可以为任何类型 这两个方法是同一个线程的 所以他们的threadlocal是同一个(同一个容器) 所以第一个放进去的连接的容易 跟二个取出连接的容器是同一个 所以 保证了调用这两个方法的连接为同一个 即保证是同一个事务

第六阶段 第二模块_第10张图片
remove就是清空容器

第六阶段 第二模块_第11张图片

https://www.cnblogs.com/tnt-33/p/10149087.html
两个动态代理的区别

第六阶段 第二模块_第12张图片

第六阶段 第二模块_第13张图片
常用

第六阶段 第二模块_第14张图片

第六阶段 第二模块_第15张图片
最终所注入的接口对象已经为动态代理的接口对象

你可能感兴趣的:(spring)