返回顶部
首页 > 资讯 > 后端开发 > Python >Spring针对AOP详细讲解
  • 542
分享到

Spring针对AOP详细讲解

2024-04-02 19:04:59 542人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录什么是spring aop为什么要用AOP?AOP的组成Spring AOP的实现导入依赖定义切面和切点定义通知Advice(5类)什么是Spring AOP AOP是面向切面编

什么是Spring AOP

  • AOP是面向切面编程。OOP是面向对象编程,AOP是一种思想,它是针对程序中的某一类的功能做统一的处理。比如用户登录权限的校验,没学AOP之前,我们所有需要判断用户登录的页面,AOP可以自动帮我们实现登录验证,不再需要每个方法中都写相同的用户登录的验证了。
  • Spring AOP是一种框架,提供了一种对AOP 思想的实现,他们的关系和ioc与DI类似。
  • 利用AOP可以对各个业务进行隔离, 从而是得业务各逻辑之间的耦合性降低, 提高了程序的可重用性, 同时提高开发效率

为什么要用AOP?

  • 之前处理用户登录的状态验证,每个Controller都要写一遍用户登录,然而当你的功能越来越多的时候,你要写的登录验证也越来越多,而这些方法都是相同的,对于这种功能统一,且使用的地方较多的功能,就可以考虑AOP来统一处理
  • 除了统一的用户登录的判断之外,AOP还可以实现:统一日志记录,统一方法执行时间的统计,统一的返回格式设置,统一的异常处理,事务的开启和提交

AOP的组成

  • 切面:切面由切点和通知组成,针对于某一个功能的具体定义(相当于一个类),某一个功能可能是登录验证功能(一个AOP一个数据库),也可能是日志记录功能,一个功能对应一个切面。
  • 切点:切点是切面中的某一个方法,用户登录验证方法就是一个切点。
  • 连接点:调用这些切点(方法)的页面就是连接点
  • 通知: 切点是一个空方法,通知是具体实现了这个方法,通知相当于切点的方法体。通知包括:前置通知,后置通知,返回之后通知,抛异常后的通知,环绕通知

Spring AOP的实现

  • 添加Spring AOP框架支持
  • 定义切面和切点
  • 定义通知

导入依赖

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

定义切面和切点

  • 类注解:@Aspect,@Component
  • 方法注解:@Pointcut
@Component
@Aspect //定义切面
public class UserAspect {
    @Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
    public void pointcut(){}
}

定义通知Advice(5类)

  • 通知是描述拦截执行的时机和具体的方法实现
  • 注意环绕通知的写法,可以记录执行接口的时间
@Component
@Aspect //定义切面
public class UserAspect {
    @Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
    public void pointcut(){}
    // 前置通知(要带一个括号)
    @Before("pointcut()")
    public void doBefore(){
        //业务代码
        System.out.println();
        System.out.println("执行了前置通知");
        System.out.println();
    }
}
 @Around("pointcut()")
    public Object doAround(ProceedingJoinPoint joinPoint){
        Object result = null;
        //执行前置业务代码
        System.out.println("执行环绕通知的前置方法");
        try {
            //执行(拦截的)业务方法
            result = joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        //执行后置业务代码
        System.out.println("执行环绕通知的后置方法");
        return result;
    }

到此这篇关于Spring针对AOP详细讲解的文章就介绍到这了,更多相关Spring AOP内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring针对AOP详细讲解

本文链接: https://lsjlt.com/news/151545.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring针对AOP详细讲解
    目录什么是Spring AOP为什么要用AOP?AOP的组成Spring AOP的实现导入依赖定义切面和切点定义通知Advice(5类)什么是Spring AOP AOP是面向切面编...
    99+
    2024-04-02
  • Java的Spring AOP详细讲解
    目录什么是AOP&作用AOP的动态代理技术基于JDK的动态代理cglib动态代理AOP相关概念AOP开发明确事项需要编写的内容AOP技术实现的内容AOP 底层使用哪种代理方式...
    99+
    2024-04-02
  • Spring超详细讲解AOP面向切面
    目录简介AOP底层原理代理概念JDK动态代理实现Spring中的AOP相关术语AspectJ实现AOP不同通知类型实现相同的切入点抽取增强类优先级完全使用注解开发说明:基于atgui...
    99+
    2022-11-13
    Spring面向切面 Spring AOP面向切面
  • 细说Spring——AOP详解(AOP概览)
    一、对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一 维护的一种技术。AOP是OO...
    99+
    2021-10-23
    java教程 Spring
  • 详细解读Java Spring AOP
    一、对AOP的初印象 首先先给出一段比较专业的术语(来自百度): 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式...
    99+
    2024-04-02
  • Swift超详细讲解指针
    目录Swift指针Unsafe Pointer对照Objective-C例子Swift指针Unsafe Pointer 如果不是只读,可以修改 ( 写入 ),就加一个 Mutable...
    99+
    2022-11-13
    Swift 指针 Swift 指针操作
  • Spring基于Aop实现事务管理流程详细讲解
    目录aop在spring事务中的运用基于纯注解实现spring事务管理基于xml文件实现Spring事务管理aop在spring事务中的运用 在Spring中,AOP和事务管理是两个...
    99+
    2023-05-20
    Spring Aop事务管理 Spring实现事务管理
  • Spring和SpringMvc详细讲解
      🏆今日学习目标: 🍀Spring和SpringMvc详细讲解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的...
    99+
    2023-10-25
    spring java
  • Spring详细讲解@Autowired注解
    目录java注解spring注解(1)配置文件形式(2)注解形式@Autowired的解析@Autowired的生效流程java注解 在解释spring的注解之前,先了解一下什么是j...
    99+
    2024-04-02
  • 详解Spring AOP
    目录什么是AOP?AOP术语通知(Advice)连接点(Join point)切点(Pointcut)连接点和切点的区别切面(Aspect)引入(Introduction)织入(We...
    99+
    2024-04-02
  • C++超详细讲解智能指针
    目录一、内存泄漏-永恒的话题二、深度思考三、智能指针分析四、小结一、内存泄漏-永恒的话题 动态申请堆空间,用完后不归还C++ 语言中没有垃圾回收的机制指针无法控制所指堆空间的生命周期...
    99+
    2024-04-02
  • Spring超详细讲解事务
    目录什么是事务事务的四个特性(ACID)Spring对事务的支持编程式事务管理声明式事务管理基于注解的声明式事务管理Spring事务管理的三个接口Spring事务属性什么是事务 一个...
    99+
    2024-04-02
  • Java Spring AOP详解
    目录1.什么是AOP?2.AOP在Spring中的作用3.使用Spring实现AOP方式一:使用Spring的接口方法二:使用自定义类来实现方法三:使用注解实现总结1.什么是AOP?...
    99+
    2024-04-02
  • C++超详细讲解引用和指针
    目录引用概念定义步骤引用必须初始化引用初始化后不能更改引用作为函数的参数可以替代指针变量常引用引用作为函数的返回值类型引用的本质指针的引用(了解)指针和引用的区别引用概念 引用的本质...
    99+
    2024-04-02
  • c++智能指针的超详细讲解
    目录1.什么是智能指针2.原始指针的问题3.unique_ptr4.shared_ptr5.shared_ptr使用需要注意的点5.1 不能将一个原始指针初始化多个shared_pt...
    99+
    2024-04-02
  • Spring事务管理详细讲解
    目录事务回顾spring事务操作基于注解声明事务@Transactional注解使用事务传播机制事务隔离级别@Transactional其他属性基于XML 声明式事务完全注解开发说明...
    99+
    2022-11-13
    Spring事务管理 Spring事务原理 Spring事务管理机制
  • Spring超详细讲解BeanUtils改造
    目录1.基本原理2.使用3.性能4.提醒1.基本原理 原理:https://www.jb51.net/article/252384.htm 浅拷贝:https://www.jb51....
    99+
    2024-04-02
  • Spring @Conditional注解示例详细讲解
    目录前言:示例:标注在方法上:标注在类上:多个条件类:前言: @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。 @...
    99+
    2022-11-13
    Spring @Conditional注解 Spring @Conditional注解使用
  • Spring超详细讲解注解开发
    目录1.使用注解开发1.1.Bean的实现1.2.属性注入1.3.衍生注解1.4.自动装配注解1.5.作用域1.6.小结2.基于Java类进行配置1.使用注解开发 说明 在sprin...
    99+
    2022-11-13
    Spring 注解开发 Spring 注解使用
  • 聊聊Spring——AOP详解(AOP概览)
    目录一、对AOP的初印象首先先给出一段比较专业的术语:然后我们举一个比较容易理解的例子:二、AOP中的相关概念这里还是先给出一个比较专业的概念定义:然后举一个容易理解的例子:三、其他...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作