Spring的AOP
Spring的AOP
AOP称为切面编程,用于将那些与业务无关但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重复使用的模块,这个模块被成为切面,减少系统中重复的代码,降级模块间的耦合度,提高系统的可维护性。
常见的AOP使用场景:
- 记录操作日志
- 缓存的处理
- Spring中内置的事务处理
比如下面这段代码,表示的是加了自定义Log注解的方法,走AOP,环绕通知,在方法里面,获取了执行的时长,然后执行方法,之后调用了保存日志的方法。
这个是saveLog的方法。功能就是保存日志到数据库。
Spring中的事务是如何实现的呢?
Spring支持编程试事务和声明式事务。
- 编程试事务需要使用TransactionTemplate来实现,对业务代码有侵入性,项目中很少用。
- 声明式事务,建立在AOP之上的,其本质试通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或回滚事务。