专车介绍
该趟专车是开往基于Spring Boot事务思想实战的专车,在上一篇 搭上SpringBoot事务源码分析专车[1]中我们详细介绍了Spring Boot事务实现的原理,这一篇是基于上一篇的实战。
在实战之前,我们再次回顾下上篇文章讲解的重点:
- 后置处理器:对Bean进行拦截并处理
- 切面:由切点和通知组成
- 切点:用于匹配符合的类和方法
- 通知:用于代理处理
专车问题
- 如何利用后置处理器对Bean进行拦截并处理?
- 如何定义切面?
- 如何定义切点?
- 如何定义通知?
- 如何实现自动配置?
专车分析
实现是以Spring Boot为基础,需要添加如下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
按照如上提到的问题依次定义
定义bean后置处理器,特别注意,如果项目中使用到了事务特性,就不需要重复定义
/**
* 一定要声明InfrastructureAdvisorAutoProxyCreator,用于实现bean的后置处理
*
* @return
*/
@Bean
public InfrastructureAdvisorAutoProxyCreator infrastructureAdvisorAutoProxyCreator() {
return new InfrastructureAdvisorAutoProxyCreator();
}
定义切面
public class BeanFactorySystemLogAdvisor extends AbstractBeanFactoryPointcutAdvisor {
/**
* 定义切点
*/
private final SystemLogPointcut point = new SystemLogPointcut();
@Override
public Pointcut getPointcut() {
return this.point;
}
}
定义切点
public class