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 

相关文章
|
2月前
|
监控 Java 应用服务中间件
Spring Boot整合Tomcat底层源码分析
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置和起步依赖等特性,大大简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是其与Tomcat的整合。
71 1
|
20天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
6天前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
35 8
|
2月前
|
XML Java 数据安全/隐私保护
Spring Aop该如何使用
本文介绍了AOP(面向切面编程)的基本概念和术语,并通过具体业务场景演示了如何在Spring框架中使用Spring AOP。文章详细解释了切面、连接点、通知、切点等关键术语,并提供了完整的示例代码,帮助读者轻松理解和应用Spring AOP。
Spring Aop该如何使用
|
2月前
|
监控 安全 Java
什么是AOP?如何与Spring Boot一起使用?
什么是AOP?如何与Spring Boot一起使用?
84 5
|
2月前
|
Java 开发者 Spring
深入解析:Spring AOP的底层实现机制
在现代软件开发中,Spring框架的AOP(面向切面编程)功能因其能够有效分离横切关注点(如日志记录、事务管理等)而备受青睐。本文将深入探讨Spring AOP的底层原理,揭示其如何通过动态代理技术实现方法的增强。
84 8
|
2月前
|
Java 开发者 Spring
Spring AOP 底层原理技术分享
Spring AOP(面向切面编程)是Spring框架中一个强大的功能,它允许开发者在不修改业务逻辑代码的情况下,增加额外的功能,如日志记录、事务管理等。本文将深入探讨Spring AOP的底层原理,包括其核心概念、实现方式以及如何与Spring框架协同工作。
|
2月前
|
XML 监控 安全
深入调查研究Spring AOP
【11月更文挑战第15天】
52 5
|
2月前
|
Java 开发者 Spring
Spring AOP深度解析:探秘动态代理与增强逻辑
Spring框架中的AOP(Aspect-Oriented Programming,面向切面编程)功能为开发者提供了一种强大的工具,用以将横切关注点(如日志、事务管理等)与业务逻辑分离。本文将深入探讨Spring AOP的底层原理,包括动态代理机制和增强逻辑的实现。
53 4
|
2月前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
49 1