spring AOP的基本概念
AOP的概念和使用原因 现实中有一些内容并不是面向对象(OOP)可以解决的,比如数据库事务,它对于企业级的Java EE应用而言是十分重要的,又如在电商网站购物需要经过交易系统、财务系统,对于交易系统存在一个交易记录的对象,而财务系统则存在账户的信息对象。从这个角度而言,我们需要对交易记录和账户操作形成一个统一的事务管理。交易和账户的事务,要么全部成功,要么全部失败。 交易记录和账户记录都是对象,这两个对象需要在同一个事务中控制,这就不是面向对象可以解决的问题,而需要用到面向切面的编程,这里的切面环境就是数据库事务。 AOP编程有着重要的意义,首先它可以拦截一些方法,然后把各个对象组织成一个整体,比如网站的交易记录需要记录日志,如果我们约定好了动态的流程,那么就可以在交易前后、交易正常完成后或者交易异常发生时,通过这些约定记录相关的日志了。 回到JDBC的代码中,令人最讨厌和最折腾的问题永远是无穷无尽的try...catch...finally...语句和数据库资源的关闭问题,而且这些代码会存在大量重复,加上开发者水平参差不齐。Spring出现前,在Java EE的开发中,try...catch...finally语句常常被严重滥用,使得Java EE的开发存在着许多问题,虽然MyBatis对JDBC做了良好的封装,但是还是不足的。