Spring AOP源码分析(一)AOP介绍和aspectj、SpringAOP入门
2023-09-14 08:59:44 时间
首先说说三个名词,面向对象、面向接口编程、面向切面编程(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的依赖
?
aspectjweaver是aspectj对AOP的实现。spring-aop是对aspectj进行Spring的封装和引入。
方式一:采用xml配置的方式
具体的例子可以详细参见这篇文章:http://www.iteye.com/topic/336873
方式二:采用注解配置的方式
可以参见http://tonl.iteye.com/blog/1966822
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
针对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的依赖
?
aspectjweaver是aspectj对AOP的实现。spring-aop是对aspectj进行Spring的封装和引入。
方式一:采用xml配置的方式
具体的例子可以详细参见这篇文章:http://www.iteye.com/topic/336873
方式二:采用注解配置的方式
可以参见http://tonl.iteye.com/blog/1966822
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
相关文章
- 失眠了,感谢技术人对“Spring Cloud Alibaba实战派的支持”
- 玩转 Spring Boot 应用篇(引入Redis解决店铺高并发读的问题)(十七)
- 【02】Spring源码-手写篇-手写DI实现
- Spring Framework 源码学习笔记(四)
- Spring事务管理[通俗易懂]
- Spring MVC注解Controller源码流程解析--映射建立
- 【04】Spring源码-手写篇-手写AOP实现(下)
- 面试系列-spring-ioc原理
- 微服务组件-----Spring Cloud Alibaba 注册中心 Nacos源码(1.4.x版本)分析
- Spring循环依赖-spring源码详解(四)
- SpringAOP(1)-spring源码详解(六)
- SpringAOP(2)-spring源码详解(七)
- Spring - AnnotationBeanNameGenerator Bean命名规则
- rabbitMQ结合spring-boot使用(3)
- 阿里面试官:说说 Spring 源码中 BeanFactory 的创建流程
- 重磅!程序员都在学的Spring实战(第6版),你竟然还没有掌握?
- Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
- 【Spring源码】- 02 Spring IoC容器启动之refresh方法
- 【Spring源码】- 03 Spring IoC容器启动之Bean创建流程
- 【Spring源码】- 10 Spring AOP核心API
- 极简教程 | 使用Actuator 实现Spring Boot应用监控
- Spring Authorization Server 计划 2022 年 11 月发布 1.0 版本
- 只会用 Spring Boot 创建微服务?这 4 种替代方案了解一下!
- Spring Boot的测试框架(一)
- 【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理
- 基于 Spring Cloud Gateway 实现微服务架构的限流、熔断和重试
- spring的事务管理详解编程语言
- spring的AOP(四)—-Spring AOP 编程(Advisor)详解编程语言
- spring配置文件详解编程语言
- Spring里的aop实现方式和源码分析详解编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言