先来解释一下 spring AOP是怎么实现事务的管理的

配置事务文件如下图:
springAOP 实现事务的管理

dao 接口
springAOP 实现事务的管理

dao 实现层
springAOP 实现事务的管理

service 接口
springAOP 实现事务的管理

service impl
springAOP 实现事务的管理

测试代码:

public class BookTest {
 public static void main(String[] args) throws Exception{
  ApplicationContext app = new ClassPathXmlApplicationContext("applicationcontext.xml");
  Book book = new Book();
  book.setBookName("11");
  BookService service = app.getBean(BookService.class);
  service.saveBook(book);
  System.out.println("ok"); 
 }
}

我们通过app.getBean(BookService.class) 获取业务类,然后调用 saveBook(book) 方法,这样spring就能对 saveBook方法进行拦截 ,进行事务处理。
spring是怎么做的呢?
其实在这里 spring 是通过 AOP的动态代理机制来 实现事务的管理的。
app.getBean(BookService.class); 其结果返回的是一个代理类,该代理为saveBook添加了事务管理代码。如下:

public class Myproxy implements BookService {
   private BookService  bookService;
  public Myproxy(BookService bookService){
   this.bookService=bookService;
}

public void saveBook(Book book){

try{
// 启动事务代码;
bookService.saveBook(Book book);

// 提交事务代码

}catch(Exception e){

// 回滚操作
}



}




相关文章:

  • 2022-01-07
  • 2021-05-13
  • 2021-12-15
  • 2021-12-21
猜你喜欢
  • 2022-02-05
  • 2021-06-09
  • 2021-08-22
  • 2021-08-23
  • 2021-12-26
  • 2022-12-23
  • 2021-04-04
相关资源
相似解决方案