黑马就业班——Spring框架:part3 -- spring中的aop和基于XML以及注解的AOP配置(包含ThreadLocal、动态代理分析)

  • 本文参考文档:《Spring5第三天.pdf》
  • 本文代码项目:spring_day03_account、 spring_day03_proxy(路径:G:\idea_java_project\)
  • 本文大部分内容参考上面项目的代码!!!

今日内容

1、完善我们的account案例,并分析案例中问题
	
2. 回顾之前讲过的一个技术:动态代理,介绍动态代理另一种实现方式

3. 解决案例中的问题
	1) spring的一些新注解使用

4. AOP的概念、spring中的AOP相关术语、spring中基于XML和注解的AOP配置

1、完善我们的account案例,并分析案例中问题
  分析之前的 spring_day02_account_xmlioc 项目。我们创建一个新的项目 spring_day03_account 来进行分析,主要看这个项目的代码解析。

ThreadLocal

  什么是ThreadLocal:顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。
  这里其实可以把ThreadLocal看作一个容器,我们创建ThreadLocal的时候,会使用泛型定义ThreadLocal中存储的数据的类型,如 ThreadLocal ,创建一个只存储Connection类型数据的ThreadLocal。然后当一个线程第一次访问 ThreadLocal 的时候,会给这个线程创建一个Connection对象,并以键值对的方式放入ThreadLocal中,键是当前的线程,值是这个线程对应的Connection对象。这个线程后面访问ThreadLocal的时候,就不会再创建新的Connection,而是直接从ThreadLocal中获取Connection。如果其他线程访问ThreadLocal,就会为其他线程创建Connection对象并放入ThreadLocal中。
  也就是说,对于每一个访问ThreadLocal的线程,在ThreadLocal中都 有且仅有一个Connection,且不同线程的Connection直接互不干扰

  有关ThreadLocal类的应用,可以参考文章:添加链接描述 、 视频:添加链接描述
  有关多线程与并发的知识,参考 黑马张孝祥的多线程视频。


  对案例中的一个疑问:为什么前面一条数据库操作语句会从数据库连接池获取一个Connection的解析,参考文章:添加链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值