Spring AOP 实战指南:从入门到精通(1)

米饭9个月前行业资讯412

Spring 框架有两大核心 IoC,AOP。在前面我们已经学习过了 IoC 的相关知识,今天就让我们开始 AOP 的学习。

一、AOP 概述

Aspect Oriented Programming(面向切面编程)。


切面就是指某一类特定问题,所以 AOP 也可以理解为面向特定方法编程。


**AOP 是一种思想,是对某一类事情的集中处理。**Spring AOP 是其中的一种实现方式。

@RequestMapping("/test")
@RestController
@Slf4j
public class TestController {

    @RequestMapping("/t1")
    public void test1(){
        log.info("我是 test1");
    }
}


AOP 的作用:在程序运行期间,在不修改源代码的基础上,对已有方法进行增强(无侵入性:解耦)。


二、Spring AOP 快速入门

我们先通过下面的程序体验下 AOP 的开发,并掌握 Spring 中 AOP 的开发步骤。


2.1 引入 AOP 依赖:

在 pom.xml 文件中添加配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.2 编写 AOP 程序:

@Aspect
@Slf4j
@Component
public class TestAspect {
    @Around("execution(* com.example.demo.controller.*.*(..))")
    public Object demo(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info("方法执行前执行");
        Object result = joinPoint.proceed();
        log.info("方法执行后执行");
        return result;
    }
}

controller 类:

@RequestMapping("/test")
@RestController
@Slf4j
public class TestController {

    @RequestMapping("/t1")
    public void test1(){
        log.info("我是 test1");
    }
}

调用 controller 中的 test1 方法。

结果如下:

5938fb39c4ce1789a88f899606fc3d9d.png

对程序进行简单的讲解:

  1. @Aspect:标识这是一个切面类。

  2. @Around:环绕通知,在目标方法的前后都会被执行。后面的表达式表示对哪些方法进行增强。

  3. ProceedingJoinPoint.proceed()让原始方法执行。

整个代码划分为三部分。

511150b2fd70f2af2f4394b45a4df1e9.png

通过上面的程序,我们也可以感受到 AOP 面向切面编程的一些优势:

  1. 代码无侵入:不修改原始的业务方法,就可以对原始的业务方法进行了功能的增强或者是功能的改变。

  2. 减少了重复代码。

  3. 提高开发效率。

  4. 维护方便。

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ


相关文章

【Docker 】提升开发效率的 Docker 实践技巧

【Docker 】提升开发效率的 Docker 实践技巧

在现代软件开发中,Docker 已成为重要的工具之一。本文将介绍如何利用 Docker 的构建缓存、自定义镜像、私有镜像仓库,以及环境变量来优化开发流程。一、构建缓存合理安排 Dockerfile 中...

运维监控体系总结

总结归纳运维工作中的监控内容。监控目标:明白监控的重要性以及使用监控要实现的业务目标通常包括以下三点:对目标系统进行实时监控监控可以实时反馈目标系统的当前状态 目标系统硬件、软件、业务是否正常、目前处...

【Docker】深入理解 Dockerfile:构建高效 Docker 镜像的指南

【Docker】深入理解 Dockerfile:构建高效 Docker 镜像的指南

Dockerfile 是 Docker 的核心组成部分之一,它定义了如何构建 Docker 镜像。Dockerfile 是一份文本文件,其中包含了构建 Docker 镜像所需的所有命令和参数。通过 D...

【Docker】深入理解 Docker Compose 文件:构建和管理多容器应用的指南

【Docker】深入理解 Docker Compose 文件:构建和管理多容器应用的指南

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过使用 Docker Compose,开发者可以使用 YAML 文件来配置应用服务,并通过单一命令来启动和停止服务...

C++二分算法:1713得到子序列的最少操作次数

C++二分算法:1713得到子序列的最少操作次数

本文涉及的基础知识点二分查找算法合集LeetCode1713题目给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以...

云端之上的边缘:解读云计算与边缘计算的战略融合

云端之上的边缘:解读云计算与边缘计算的战略融合

一、引言在当前的信息化和数字化浪潮中,云计算和边缘计算作为两种重要的计算模型,各自在不同的场景中发挥着不可替代的作用。它们不仅在概念、特点、应用场景上有所不同,而且在实际应用中常常相互协作,形成了一种...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。