Spring AOP源码分析(一)AOP介绍和aspectj、SpringAOP入门

简介:
首先说说三个名词,面向对象、面向接口编程、面向切面编程(Aspect Oriented Programming 即AOP)。 
针对java来说 
面向对象:是对现实世界的描述,是后两者的基础,大前提。 
面向接口编程:接口就是一组规则的集合,这组规则可以有不同的实现方式。如JDBC,它本身仅仅是接口规范,不同的数据库有不同的实现,我们通过JDBC这样的接口编程,就无需关心我们使用的是哪种数据库,可以方便的实现数据库的切换而不必改动代码。 
面向切面编程:是对面向对象的补充,主要应用的场景为: 
              (1):权限拦截 
              (2):方法监控 
              (3):日志记录 
虽然这些场景有时可以使用其他方案解决,从侵入性方面来看,AOP绝对是一个好的方案。 

然后又是几个大名词:AOP、Spring AOP和aspectj和jboss AOP 
AOP:首先是AOP联盟约定了几个概念,如Joinpoint、Pointcut、Advice等。 
              (1) Pointcut:拦截点表达式, 
              (2)Joinpoint:符合上述Pointcut表达式的一个具体的拦截点。他们的关系就 
                            像正则表达式和符合该正则表达式的对象一样。 
              (3)advice:如拦截到对应的某个方法后,我们要做写什么?advice就是拦截后 
                        要执行的动作。 
      总结下来就是说,在符合所有pointcut的拦截点上执行advice动作。 
aspectj和jboss AOP对于上述约定进行了具体的实现,独立与其他。 

Spring AOP:将aspectj的实现加入到Spring大军中,使得AOP与Spring可以更好的融合起来为开发提供方便的服务。 

接下来,我们就需要从aspectj单独来看看AOP,然后就是SpringAOP的使用。最后就是本系列的重点,SpringAOP是如何通过aspectj来实现AOP编程的。 

从aspectj单独来看看AOP: 
学习方式一:看aspectj的官方文档    
            http://www.eclipse.org/aspectj/doc/released/progguide/index.html 
学习方式二:已经有人总结了aspectj的aop系列,参见:      
             http://blog.csdn.net/zl3450341/article/category/1169602 
我在这里只说下,注意的事项。 
使用eclipse来开发aspectj项目,需要安装AJDT插件,目前最新的AJDT插件为2.2.3,支持的eclipse版本如下,后面为安装插件的地址:
Eclipse 4.3 Kepler-》 http://download.eclipse.org/tools/ajdt/43/update 
Eclipse 4.2 and 3.8 Juno -》 http://download.eclipse.org/tools/ajdt/42/update 
目前还不支持最新的Eclipse 4.4 Luna。 
所以先去上面学习地址中先去体验一把aspect的AOP,然后你才能更好的理解SpringAOP。 

使用SpringAOP:采用xml配置和注解两种方式来使用Spring Aop。 
要解决的第一个问题就是,pom的依赖 

?
1
2
3
4
5
6
7
8
9
10
<dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version> 4.0 . 5 .RELEASE</version>
    </dependency>
    <dependency>
     <groupId>org.aspectj</groupId>
     <artifactId>aspectjweaver</artifactId>
     <version> 1.8 . 2 </version>
    </dependency>

aspectjweaver是aspectj对AOP的实现。spring-aop是对aspectj进行Spring的封装和引入。 
方式一:采用xml配置的方式 
具体的例子可以详细参见这篇文章:http://www.iteye.com/topic/336873 
方式二:采用注解配置的方式 
可以参见http://tonl.iteye.com/blog/1966822 

相关文章
|
4月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
569 0
|
3月前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
8月前
|
监控 安全 Java
Spring AOP实现原理
本内容主要介绍了Spring AOP的核心概念、实现机制及代理生成流程。涵盖切面(Aspect)、连接点(Join Point)、通知(Advice)、切点(Pointcut)等关键概念,解析了JDK动态代理与CGLIB代理的原理及对比,并深入探讨了通知执行链路和责任链模式的应用。同时,详细分析了AspectJ注解驱动的AOP解析过程,包括切面识别、切点表达式匹配及通知适配为Advice的机制,帮助理解Spring AOP的工作原理与实现细节。
1306 13
|
5月前
|
人工智能 监控 安全
如何快速上手【Spring AOP】?核心应用实战(上篇)
哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
|
5月前
|
设计模式 Java 开发者
如何快速上手【Spring AOP】?从动态代理到源码剖析(下篇)
Spring AOP的实现本质上依赖于代理模式这一经典设计模式。代理模式通过引入代理对象作为目标对象的中间层,实现了对目标对象访问的控制与增强,其核心价值在于解耦核心业务逻辑与横切关注点。在框架设计中,这种模式广泛用于实现功能扩展(如远程调用、延迟加载)、行为拦截(如权限校验、异常处理)等场景,为系统提供了更高的灵活性和可维护性。
|
11月前
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
851 25
|
11月前
|
XML 安全 Java
Spring AOP—深入动态代理 万字详解(通俗易懂)
Spring 第四节 AOP——动态代理 万字详解!
498 24
|
10月前
|
Java API 微服务
微服务——SpringBoot使用归纳——Spring Boot中的切面AOP处理——Spring Boot 中的 AOP 处理
本文详细讲解了Spring Boot中的AOP(面向切面编程)处理方法。首先介绍如何引入AOP依赖,通过添加`spring-boot-starter-aop`实现。接着阐述了如何定义和实现AOP切面,包括常用注解如`@Aspect`、`@Pointcut`、`@Before`、`@After`、`@AfterReturning`和`@AfterThrowing`的使用场景与示例代码。通过这些注解,可以分别在方法执行前、后、返回时或抛出异常时插入自定义逻辑,从而实现功能增强或日志记录等操作。最后总结了AOP在实际项目中的重要作用,并提供了课程源码下载链接供进一步学习。
1395 0
|
10月前
|
Java 开发者 微服务
微服务——SpringBoot使用归纳——Spring Boot中的切面AOP处理——什么是AOP
本文介绍了Spring Boot中的切面AOP处理。AOP(Aspect Oriented Programming)即面向切面编程,其核心思想是分离关注点。通过AOP,程序可以将与业务逻辑无关的代码(如日志记录、事务管理等)从主要逻辑中抽离,交由专门的“仆人”处理,从而让开发者专注于核心任务。这种机制实现了模块间的灵活组合,使程序结构更加可配置、可扩展。文中以生活化比喻生动阐释了AOP的工作原理及其优势。
550 0

热门文章

最新文章