大伙都了解,AOP模块是 Spring的核心模块,虽然在Java社区里 Aspectj是最完整的AOP
框架,但 Spring AOP也提供了另外一种达成,这种达成并非 Aspectj的角逐者,相反,
Spring AOP还将 Aspectj集成了进去,为IoC容器和 Spring应用开发提供了一个一致性的AOP解决方法。
Spring AOP的核心技术是上一小节介绍的JDK动态代理技术。以动态代理技术为基础,
设计出了一系列AOP的横切达成,譬如前置公告、返回公告、异常公告等。同时, SpringAOP还提供了一系列的Pointcut来匹配切入点,可以用现有些切入点来设计横切面,也可以扩展有关的 Pointcut办法来达成切入需要。
在Spring AOP中,虽然对于AOP的用法者来讲,仅需配置有关的Bean概念即可,但仔细剖析 Spring AOP的内部设计可以看到,为了让AOP起用途,需要完成一系列过程,譬如,需要为目的对象打造代理对象,这个代理对象可以通过用JDK的 Proxy来完成,也可以通过第三方的类生成器 CGLIB来完成。然后,还需要启动代理对象的拦截器来完成各种横切面的织入,这一系列的织入设计是通过一系列 Adapter来达成的。通过一系列Adapter的设计,可以把AOP的横切面设计和 Proxy模式有机地结合起来,从而达成在AOP中概念好的各种织入方法。具体的设计达成可以参考后面的内容,这里只不过简要介绍一下。
文章题目Spring AOP的设计剖析