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

米饭10个月前行业资讯639

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 composer 安装sentry的运维总结--未完待续

docker composer 安装sentry的运维总结--未完待续

一、sentry安装1、下载最新的github工程地址是https://github.com/getsentry/self-hosted。我们安装的时候最新版本还是Sentry 21.6.1, 截止目...

MySQL 数据出海之数据同步方案

MySQL 数据出海之数据同步方案

数据库出海流程【1】业务出海:1)数据库出海;2)应用出海;3)流量分发;【2】数据库出海:涉及业务方、信安、DBA和框架组。数据库出海,流量在国内 --> 应用出海,流量在国内 -->...

从传统运维到SRE的转型路线

从传统运维到SRE的转型路线

从传统运维向SRE(Site Reliability Engineering)转型需要技术技能、思维方式和工作模式的全面转变。以下是详细的转型路线图:一、理解SRE的核心理念SRE的定义SRE是Goo...

Elasticsearch - 原理剖析 倒排索引与读写流程

Elasticsearch - 原理剖析 倒排索引与读写流程

倒排索引Elasticsearch 是一个基于 Lucene 构建的分布式搜索引擎,它能够以非常高的效率执行全文搜索查询。在 Elasticsearch 的核心,倒排索引(Inverted Index...

在经济低迷时管理云服务的策略!

近几年全球经济在疫情等各方面影响之下持续低迷,Wanclouds公司发布的一份研究报告指出,81%的美国IT领导者表示,他们的首席执行官要求他们减少或者不增加云计算支出。事实上,在那些被要求削减成本的...

如何为阿里云服务器配置域名

如何为阿里云服务器配置域名

域名是互联网上的门牌号,它将用户输入的网址转换为服务器的IP地址,从而让用户能够访问到服务器上托管的网站或应用。阿里云作为国内领先的云服务提供商,提供了强大的服务器和域名管理服务。本文将详细介绍如何为...

发表评论    

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