学习来源:SSM主流框架入门与综合项目实战
贴一些术语定义之类的,主要的还是代码,就不贴了
AOP术语
JoinPoint
被拦截到的点,Spring中这些点指的是方法PointCut
对哪些JoinPoint进行拦截的定义Advice
拦截到JoinPoint
之后所要做的事情Introduction
在不修改类的代码的前提下在运行期间动态添加一些 Method 或 FieldTarget
代理的目标对象Weaving
创建代理对象的过程Proxy
产生的代理类Aspect
JoinPoint 和 Introduction 的结合
使用aspectj
@Before
前置通知 BeforeAdvice 权限验证@AfterReturning
后置通知 AfterReturningAdvice 日志记录@Around
环绕通知 MethodInterceptor@AfterThrowing
异常抛出通知 ThrowAdvice@After
最终通知 final 不管是否异常都会执行
使用execution函数
execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
- 所有public方法
execution(public * * (..))
- 指定包下的方法
execution(* com.example.dao.*(..))
不包含子包execution(* com.example.dao..*(..))
包含子包
- 指定包所有方法
execution(* com.example.dao.AAA.*(..))
- 实现特定接口
execution(* com.example.dao.AAA+.*(..))
- 所有以save开头的方法
execution(* save*(..))
使用jdbc template
对原始 JDBC 的简单封装
相关配置
1 | <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> |
数据库事务相关术语
事务
要么完全执行,要么完全不执行原子性
不可分割 结构上一致性
必须使从一个一致性状态变为另一个一致性状态 业务规则上隔离性
一个事务的执行不能被另一个所干扰持久性
脏读
:读取未commit的数据不可重复读
读两次,结果不一样 在这个事务中有别的事务插入幻读
置零,另一个事务介入置10,再次读不为0Mysql事务隔离级别
- JDBC事务隔离级别
- Spring事务处理api
- Spring事务传播行为