按照传统的经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用 synchronized 进行线程同步,但线程同步机制会降低并发性,影响系统性能。ThreaLocal 可以改变这种方式。
Spring笔记(十)—— 事务管理之数据库事务基础知识
概念
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作(可理解为对数据库的简单操作,如:增删查改),要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作(将一组相关操作组合为一个单元)都成功完成,否则不会将数据库操作真正地写入数据库,如此简化错误恢复的实现,并使应用程序更加可靠。
Spring笔记(九)—— AOP 之资源访问接口 Resource
JDK 提供的访问资源的类(java.net.URL 和 File)不能满足各种底层资源的访问需求,比如缺少从类路径或 Web 容器的上下文中获取资源的操作类。因此,Spring 设计了一个 Resource 接口,为应用提供了更强的访问底层资源的能力。
Spring笔记(八)—— AOP 之基于 Schema 配置
Spring 提供了使用新的 aop 命名标签定义切面的支持,使得我们可以使用 Schema 配置切面。基于 @AspectJ 注解的切面,本质上是将切点、增强类型的信息使用注解进行描述;而在基于 Schema 的实现方式中,把这两个信息移到 Schema 的 XML 配置文件中。虽然配置方式不同,但两者表达的信息完全相同。使用基于 Schema 的切面定义后,切点、增强类型的注解信息从切面类中剥离出来,原本的切面类变成了真正意义上的 POJO。在 Spring 配置中,所有的 aspect、pointcut 和 advisor 元素都需要放置在 <aop:config>
元素之下。
Spring笔记(七)—— AOP 之 @AspectJ 支持
开启 @AspectJ 支持
@AspectJ 指的是使用注解标注的常规 Java 类的样式声明切面,@AspectJ 样式是 AspectJ 项目引入的,作为 AspectJ 5 版本的一部分。Spring 使用由 AspectJ 提供的库 aspectjweaver.jar(要求版本至少为 1.6.8),就能像 AspectJ 5 那样解析注解。