springboot中的AOP开发

三步:

1.引入springboot-boot-start-aop jar包

<!--springboot与aop集成jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

2.开发切面

两个主要的注解:@Configuration ,让springboot框架做自动配置

        @Aspect ,告知springboot这个类是一个切面类

前置通知和后置通知的开发。

@Configuration
@Aspect
public class MyAspect {
    //前置通知
    @Before("within(com.lkl.service.UserServiceImpl)")
    public void BeforeSearch(JoinPoint joinPoint){
        System.out.println("目标类:"+joinPoint.getTarget());
        System.out.println("方法名:"+joinPoint.getSignature().getName());
        System.out.println("方法参数:"+joinPoint.getArgs());
        System.out.println("=========这是为查询所有开发的前置通知========");
    }
    //后置通知
    @After("execution(* com.lkl.service.UserServiceImpl.*(..))")
    public void AfterTest(JoinPoint joinPoint){
        System.out.println("===========后置通知===========");
        System.out.println("目标类:"+joinPoint.getTarget());
        System.out.println("方法名:"+joinPoint.getSignature().getName());
        System.out.println("方法参数:"+joinPoint.getArgs());
    }
}

前置通知和后置通知类似,了解即可。主要掌握环绕通知

后置通知的开发

@Configuration
@Aspect
public class MyAspect {

    @Around("execution(* com.lkl.service.UserServiceImpl.*(..))")
    public Object aroundTest(ProceedingJoinPoint proceedingJoinPoint){
        System.out.println("目标类:"+proceedingJoinPoint.getTarget());
        System.out.println("目标方法:"+proceedingJoinPoint.getSignature().getName());
        System.out.println("目标方法参数:"+proceedingJoinPoint.getArgs());
        System.out.println("==========进入环绕通知之前=========");
        Object proceed = null;
        try {
            proceed = proceedingJoinPoint.proceed();   //放行
            System.out.println("目标方法的返回值:"+proceed);
            System.out.println("========执行目标方法之后的操作========");

            return proceed;      //将目标方法执行的结果返回

        } catch (Throwable throwable) {
            System.out.println("==========异常通知=========");
            throwable.printStackTrace();
        }
        return null;
    }

}

3.注意事项

1)前置通知和后置通知,自定义方法传递参数是:JoinPoint

2)环绕通知,传递参数为:ProceedingJoinPoint

原文地址:https://www.cnblogs.com/lkldeblog/p/10627691.html

时间: 2024-10-06 22:26:17

springboot中的AOP开发的相关文章

SpringBoot中使用AOP实现计算Service执行时间

1.增加POM.XML的依赖架包 <!-- 引入 spring aop 依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency> 2.编写AOP切面主体类如:LogServiceTakeTime 1 package com.leecx

Springboot中使用Scala开发

新建maven工程,添加pom依賴: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

在Spring中使用AOP切面编程

如果有对SpringAOP不太懂的小伙伴可以查看我之前的Spring学习系列博客 SpringBoot的出现,大大地降低了开发者使用Spring的门槛,我们不再需要去做更多的配置,而是关注于我们的业务代码本身,在SpringBoot中使用AOP有两种方式: 一.使用原生的SpringAOP(不是很推荐,但这是最基本的应用) 基原理就是之前写的SpringAOP在web应用中的使用的第三种方式,使用@AspectJ样式注解方式 第1步,引入Aspect的相关依赖 <dependency> <

SpringBoot中使用LoadTimeWeaving技术实现AOP功能

目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现AOP的例子 3. 参考资料 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 AOP--面向切面编程,通过为目标类织入切面的方式,实现对目标类功能的增强.按切面被织如到目标类中的时间划分,主要有以下几种: 1.运行期织入 这是最常见的,比如在运行期通过为目标类生成动态代理

SpringBoot应用中使用AOP记录接口访问日志

SpringBoot应用中使用AOP记录接口访问日志 本文主要讲述AOP在mall项目中的应用,通过在controller层建一个切面来实现接口访问的统一日志记录. AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP的相关术语 通知(Advice) 通知

Springboot 中AOP的使用

面向切面编程(Aspect Oriented Programming) 是软件编程思想发展到一定阶段的产物,是面向对象编程的有益补充.AOP一般适用于具有横切逻辑的场合,如访问控制.事务管理.性能检测等. 日志.异常处理.事务控制等都是一个健壮的业务系统所必须的.但是为了保证系统健壮可用,就要再众多业务方法中反复编写类似的代码,使得原本就很复杂的业务处理代码变得更加复杂.业务功能的开发者还要考两次这些额外的代码是否处理正确,是否有遗漏的地方,如果需要修改日志信息的格式或者安全验证的规则,或者再增

SpringBoot中异步请求和异步调用(看这一篇就够了)

一.SpringBoot中异步请求的使用 1.异步请求与同步请求 特点: 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应.一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上来分摊请求压力,当然还可以通过消息队列来做请求的缓冲). 2.异步请求的实现 方式一:Servlet方式实现异步请求

SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法

首先谢谢大佬的简书文章:http://www.jianshu.com/p/45ad65690e33# 这篇文章中讲的是spring中使用spring data jpa,使用了xml配置文件.我现在使用的是spring boot ,没有了xml文件配置就方便多了.我同样尝试了两种方式,也都是简单的查询,需要更复杂的查询,还需要我研究研究.往下看,需要先配置springboot的开发环境,需要大致了解springboot,这里可以看下面两篇文章: springboot 项目新建 springboot

Spring中的AOP(五)——在Advice方法中获取目标方法的参数

摘要: 本文介绍使用Spring AOP编程中,在增强处理方法中获取目标方法的参数,定义切点表达式时使用args来快速获取目标方法的参数. 获取目标方法的信息 访问目标方法最简单的做法是定义增强处理方法时,将第一个参数定义为JoinPoint类型,当该增强处理方法被调用时,该JoinPoint参数就代表了织入增强处理的连接点.JoinPoint里包含了如下几个常用的方法: Object[] getArgs:返回目标方法的参数 Signature getSignature:返回目标方法的签名 Ob