对AOP的理解
说AOP前先说下代理。所谓代理,就是把东西交给代理来管理。如把房子交给房产中介来卖。这样房产中介就能做一些事情,比如给房子定价,打广告等。同样,可以将一个类交给代理管理,那么代理就可以对这个类做一些事情。spring就像这样的一个代理。当ACTION要某个服务层的类时,不用直接调用那个类。spring会将那个类给action。同样当页面向后台要action时,并不是直接找的那个action ,而是spring将那个类给页面。
?
这样将类交给代理(spring)管理有什么好处呢?
?
那就是便于管理。
?
想想,如果我有这样一个需求,在访问类时验证用户是否登录,没有登录不能访问,那么是不是要在每个类里面加入验证是否登录的方法?如果将类都交给代理(spring),只需要代理(spring)验证该用户是否登录,没有登录,则所有的类都不给它,是不是方便很多?
同样的,有这样一个需求。先更新一个表,成功后更新另一个表。如果中途出错,则两个表都不更新。这样,这两句可以做成一个事务。可是如果这样的需求很多,那是不是又得每个都加上事务?如果有了代理,那么代理可以给某些类统一的加上事务。比如,在所有update,delete ,insert开头的方法里加入事务。
?
上面所说的对某一类类或方法的统一的管理就是AOP,即面向切面的编程。