文章目录

  • Spring中的AOP切面编程的三种实现方式
    • 1.最基本AOP的实现
      • a.引入jar包
      • b.编写通知类,这里以后置通知和环绕通知类为例子进行说明
      • c.在SpringIOC容器中配置
      • d.测试
    • 2.使用注解对AOP进行实现
      • a.引入jar包
      • b.编写基于注解的AOP通知类
      • c.在SpringIOC容器中配置
      • d.测试
    • 3.基于自定义形式的AOP的实现
      • a.引入jar包
      • b.编写基于自定义形式的AOP切面编程类
      • c.在SpringIOC容器中配置
    • 切入点execution的使用方法

Spring中的AOP切面编程的三种实现方式

1.最基本AOP的实现

a.引入jar包

jar包的引入如下图:

b.编写通知类,这里以后置通知和环绕通知类为例子进行说明

通知类的编写如下图:

c.在SpringIOC容器中配置

如下图:

d.测试

2.使用注解对AOP进行实现

a.引入jar包

jar包的引入如下图:

b.编写基于注解的AOP通知类

如下图:

c.在SpringIOC容器中配置

如下图:

d.测试

这样在对应的切面中的java方法执行之后,前置通知方法会在此java方法执行之前先执行,后置通知方法会在此java方法执行之后再执行,而异常通知方法会在java方法出现异常之后执行,环绕通知方法会在java方法执行的前后执行,最终通知会在整个方法执行之后无论有没有异常都会执行;

3.基于自定义形式的AOP的实现

a.引入jar包

jar包的引入如下图:

b.编写基于自定义形式的AOP切面编程类

如下图:

c.在SpringIOC容器中配置

如下图:

切入点execution的使用方法

切入点对应的execution()小括号内的内容可以有多种书写形式,目前我掌握了两种,
1.void org.lanqiao.service.impl.StudentServiceImpl.addStudent(org.lanqiao.entity.Student))这种形式表示切入点是
org.lanqiao.service.impl包中的StudentServiceImpl类中的方法名字是addStudent,只有一个参数,参数类型是

​ org.lanqiao.entity.Student,返回值类型是void,的方法,注意方法的参数只写类型的全类名
​ 2.* org.lanqiao.service.impl.星号.星号(…)此中形式表示切入点是org.lanqiao.service.impl包中的所有的方法
​ 第一个星号代表的是所有的返回类型,第二个星号代表org.lanqiao.service.impl包中的所有的类,第三个*表示类中所有的方法,
​ …代表的是方法的所有参数类型

Spring中的AOP切面编程的三种实现方式相关推荐

  1. AOP面向切面编程的三种实现方式

    AOP概念 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是 ...

  2. Spring中部署Activiti流程定义的三种姿势

    摘要:本文对工作流Activiti框架中流程定义的部署进行了详细说明介绍. 本文分享自华为云社区<项目中工作流部署详细解析!Spring中部署Activiti流程定义的三种姿势>,作者:攻 ...

  3. 操作系统课设——编程演示三种管理方式的地址换算过程

    核心内容 编程演示三种管理方式的地址换算过程 分页方式的地址换算 分段方式的地址换算 段页式的地址换算 概括 程序主要有三个功能,分别是 分页方式的地址换算,分段方式的地址换算,段页式的地址换算. S ...

  4. Spring Boot 启动执行某个方法的三种实现方式

    Spring Boot 启动执行某个方法的三种实现方式 Spring Boot 启动执行某个方法的三种实现方式 第一种方式 @PostConstruct 注解解释 具体实现 第二种方式 Applica ...

  5. [5] Spring中的AOP操作(使用xml 配置文件的方式)

    AOP (Aspect Oriented Programing) 面向切面编程 AOP 采取横向抽取机制,取代了传统的纵向继承体系重复性代码(性能监视.事务管理.安全检查.缓存) Spring AOP ...

  6. spring的@Scheduled 定时任务没反应(三种配置方式)

    第一种,很麻烦 配置文件 <!--扫描所在包--><context:component-scan base-package="com.xxx.schedule"/ ...

  7. Spring中bean的初始化和销毁几种实现方式详解

    关联博文:Spring中Bean的作用域与生命周期 Bean的生命周期 : 创建bean对象 – 属性赋值 – 初始化方法调用前的操作 – 初始化方法 – 初始化方法调用后的操作 – --- 销毁前操 ...

  8. spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller

    示例1:通过包路径及类名规则为应用增加切面 该示例是通过拦截所有com.dxz.web.aop包下的以Controller结尾的所有类的所有方法,在方法执行前后打印和记录日志到数据库. 新建一个spr ...

  9. Android的surface的三种工作方式

    注:文章内容是基于kitkat进行的粗线条分析,做为学习过程中的小结. Surface的三种使用方式 Native层的Surface工作方式有:仅在Proxy端.Proxy和Service端协同.仅在 ...

最新文章

  1. OpenCV-Python教程(4、形态学处理)
  2. FastJson常见问题
  3. bzoj2720 [Violet 5]列队春游
  4. 手机的基本功能测试---情景模式
  5. FolderBrowserDialog(文件夹浏览对话框)
  6. MySQL软件的介绍
  7. 计算机图形学E9——裁剪——固定矩形窗口裁剪多边形(凸多边形/凹多边形)
  8. UI必不可少!手机计算器界面设计可学习案例
  9. influx没有web_influxdb 安装及简单使用
  10. Dijkstra 算法初探
  11. 电脑下边的任务栏不见了_Win7系统电脑任务栏经常自动消失不见的解决方法
  12. C#Socket客户端
  13. CSS行内样式内部样式外部样式
  14. java 插件开发教程_Eclipse插件开发的详细教程
  15. Premiere Pro CC2018 软件安装包+安装教程
  16. Faceted project metadata file /.settings/org.eclipse.wst.common.project.facet.core.xml could
  17. 小实验:PC9与PC10连通的命令操作
  18. Lerna 入门级教程
  19. 大众点评Cat--架构分析
  20. Python生成正则测试数据

热门文章

  1. QQ群78928780记录整理:90524人生话题-部分
  2. Go 框架解析 -iris
  3. ArrayList类基础使用
  4. 夜神模拟器访问本地服务器
  5. 接口测试HTTP协议详解请求篇
  6. 抗震救灾,众志成城,情系汶川,哀悼512
  7. 三步搞定oracle 11G 导出的pmd文件,导入oracle 12C数据库中
  8. 分布式session详解
  9. null与空字符串区别
  10. NX/UG二次开发—CAM—设置平面铣程序的切削底面(Floor)