springAOP 实现事务的管理

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

配置事务文件如下图:

dao 接口

dao 实现层

service 接口

service impl

测试代码:

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){

// 回滚操作
}



}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值