AOP思想:
在系统开发中,将系统的共性的公共的功能独立实现,在程序运行的过程中,将共性功能和核心的业务功能,进行整合。主要用于数据库打开关闭,更新时事务的处理上(功能相当于更高一级的代理设计模式)
好处:
1 完成共性功能和核心业务功能的解耦合
2 提供共性功能的复用性
AOP产生动机:
在传统开发中,数据库的连接控制操作和更新时的事务控制操作都交给业务层子类完成,这个时候如果有很多个业务层子类,则会有大量的代码重复。解决代码重复可以使用静态代理类来解决,虽然静态代理类可以帮助业务主体减少代码,但是没有任何的可重用性。所以可以使用动态代理类。但是动态代理无法灵活的进行代码的配置,即:有的包中类需要代理,但有的包中的类不需要。所以,spring提出了AOP切面思想。实现动态代理的所有功能并且可以由开发者自行定义切面的控制。
AOP技术的核心项:
关注点:所有需要关注的业务处理操作
关注点分离:将业务进行逐步拆分,形成一个个不可拆分的独立组件
横切关注点:实现核心的代理功能,利用代理功能可以在多个辅助操作上对多个关注点进行处理。横切点可能有很多。例如转账中的:“转账”“记账”“身份检查”“日志记录”。
织入:将横切关注点分离之后需要知道代理操作的执行位置。
而AOP无论多复杂,他也是一种高级代理,而一般会有如下的操作:
在业务执行之前进行代理操作
在业务执行之后进行代理操作
在异常产生之后进行代理操作
Spring中的AOP:
AOP切入点表达式:AOP实现技术的关键是进行切入点的动态配置,常见的切入点的表达式形式:execution(public * cn.lt..service..*.*(..))
AOP基础实现:
引入aop的命名空间
【spring】引入aop的相关依赖包:
【spring-base】子模块引入依赖