网站开发 APP开发 小程序开发 SEO优化 公司新闻

Spring AOP的设计分析

2018-05-24 11:26:53
989

  大家都知道,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中定义好的各种织入方式。具体的设计实现可以参考后面的内容,这里只是简要介绍一下。