SpringBoot实战笔记:02_使用注解与Java配置的Aop示例

【SpringBoot】SpingBoot整合AOP 说起spring,我们知道其最核心的两个功能就是AOP(面向切面)和IOC(控制反转),这边文章来总结一下SpringBoot如何整合使用AOP。 一、示例应用场景:对所有的web请求做切面来记录日志。 1、pom中引入SpringBoot的web模块和使用AOP相关的依赖: 其中: cglib包是用来动态代理用的,基于类的代理; aspectjrt和aspectjweave... 阅读详情

使用注解与Java配置的Aop示例

0,添加所需依赖
<!--02_新的依赖-->
<!--导入spring的aop支持-->
<dependency>
  <groupId>${spring-groupId}</groupId>
  <artifactId>spring-aop</artifactId>
  <version>${spring-framework.version}</version>
</dependency>

<!--导入AspectJ依赖库(该库提供注解式切面编程)-->
<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>1.8.13</version>
</dependency>

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.8.13</version>
</dependency>
1,自定义注解类:@Action
/**
 * 拦截规则的注解
 */
@Target(ElementType.METHOD)//该注解使用在方法声明上
@Retention(RetentionPolicy.RUNTIME)//该注解在运行时使用
//注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
//也就是说内存中的字节码中也包含该注解
@Documented//使用javadoc等工具生成文档时,会将该注解也加入进文档
public @interface Action {

    String name();

}
2,用于演示注解拦截的类:ShowAnnotationService
/**
 * 使用注解的被拦截类
 */
@Service
public class ShowAnnotationService {

    @Action(name = "注解式拦截的add操作")
    public void add(){}
}
3,用于演示被方法规则拦截的类:ShowMethodService
/**
 * 使用方法规则的被拦截类
 * 在add上没有声明@Action注解
 */
@Service
public class ShowMethodService {

    public void add(){}

}
4,切面类,定义拦截后的操作
/**
 * 切面
 */
@Aspect//声明此类是一个切面
@Component//将此机切面,放入Spring容器中,成为一个bean
public class LogAspect {

    //声明切入点
    @Pointcut("@annotation(com.zyf.Action)")
    public void annotationPointCut(){

    }

    //声明通知(建言),使用上面定义的那个切点
    @After("annotationPointCut()")
    public void after(JoinPoint joinPoint){
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();

        Action action = method.getAnnotation(Action.class);
        //通过反射获得注解上的属性,@action(name="我就是属性")
        System.out.println("注解式拦截:"+action.name());
    }

    //声明通知(建言),直接使用拦截规则作为参数
    @Before("execution(* com.zyf.ShowMethodService.*(..))")
    public void before(JoinPoint joinPoint){

        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        System.out.println("方法规则拦截:"+method.getName());

    }
}
5,Java配置的配置类
@Configuration//这是一个配置类
@ComponentScan("com.zyf")//扫描哪些包中的注解
@EnableAspectJAutoProxy//开启Spring对AspectJ的支持
public class AopConfig {

    //因为我们已经在需要使用的类上,通过注解的方式声明成bean了
    //就无需再java配置类中,自定义方法返回对象了

}
6,测试
public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(AopConfig.class);

        ShowAnnotationService annotationService = context.getBean(ShowAnnotationService.class);
        ShowMethodService methodService = context.getBean(ShowMethodService.class);


        annotationService.add();
        methodService.add();

        context.close();
    }
}
7,测试结果

Springboot基于注解的AOP操作 切面、切点 使用 添加注释 使用 结果 解释 这段代码是在一个Spring AOP的切面(Aspect)中,用于拦截方法并处理相关信息。我将逐步解释每一部分的功能和目的:获取方法参数: 这行代码从切点(JoinPoint)获取当前拦截方法的参数值数组。 数组包含了方法调用时传递的所有参数。获取方法签名: 这里首先从切点获取方法的签名信息,然后将其转换为 ,这是因为我们需要访问特定于方法的属性。获取参数名称和方法: 这段代码获取了当前拦截方法的所有参数名称和方法本身的反射对象。 包含参数的名称,而 阅读详情

相关推荐

SpringBoot自定义注解 + AOP 防止重复提交(建议收藏)

开发的项目中可能会出现下面这些情况:重复提交带来的问题核心接口需要做防重提交,你应该可以想到以下几种方案:方式一:前端JS控制点击次数,屏蔽点击按钮无法点击 前端可以被绕过,前端有限制,后端也需要有限制方式二:数据库或者其他存储增加唯一索引约束 需要想出满足业务需求的唯一索引约束,比如注册的手机号唯一。但是有些业务是没有唯一性限制的,且重复提交也会导致数据错乱,比如你在电商平台可以买一部手机,也可以买两部手机方式三:服务端token令牌方式 下单前先获取令牌-存储redis,下单时一并把token提交并检验

m0_67698950的博客 3026

(八)Spring Boot Web 开发【配置AOP】

1、AOP 简介        要介绍面向切面编程( Aspec -Oriented Programming , AOP),首先要想到这这样一个场景:公司有 个人力资源管理系统目前已经上线,但是系统运行不稳定,有时运行得很慢,为了检测出到底是哪个环节出问题了,开发人员想要监控每一个方法的执行时间,再根据这些执行时间判断出问题所在。当问题解决后,再把这些监控移除掉。系统目前己经运行,如果手动修改系统中成千上万个方法,那么工作量未免太大,而且

哟,你又在偷偷写bug! 925

SpringBoot是如何实现AOP和IOC的

SpringBoot是如何自动实现IOC和AOP的 一、概念解析(AOP & IOC/DI) 本文主要是通过代码实现Spring Boot中的IOC和AOP配置。一些概念性的东西可以去我的博客了解。这里的AOP和IOC是属于Spring容器框架的范畴。和SpringBoot关系不大,因为Spring Boot的初中是整合简化了Spring和Spring MVC的开发。 1、关于IOC/DI的概念分析(简单全面)。☞点击链接前往; 这一片文章是多年前在学习使用Spring的过程中整理的。里面包括了很

复制乔布斯 5804

SpringBoot之集成Spring AOP

在开始之前,我们先把需要的jar包添加到工程里。新增Maven依赖如下: org.springframework.boot spring-boot-starter-aop 接下来,我们进入正题。这里的涉及的通知类型有:前置通知、后置最终通知、后置返回通知、后置异常通知、环绕通知,下面我们就具体的来看一下怎么在Spr

398701344努力加油! 5万+

SpringBoot 实现数据加密脱敏(注解 + 反射 + AOP)

傻瓜式编程不是说傻,而是相当于切入式编程,傻瓜式编程需要对用户信息相关的所有接口进行加密,解密脱敏的逻辑处理,这里改动的地方就比较多,风险高,重复操作相同的逻辑,工作量大,后期不好维护;切入式编程只需要对用户信息字段添加注解,对有注解的字段统一进行加密,解密脱敏逻辑处理,操作方便,高聚合,易维护;使用AOP,项目启动后,只要调用切入点对应的方法,就会根据切入点来形成一个切面,进行统一的逻辑增强;将项目中关于用户信息实体类的字段,比如姓名,手机号,身份证,地址等,在新增进数据库之前,对数据进行加密处理;

Mr丶·Zhou博客 830

SpringBoot-自定义注解AOP实现及拦截器示例

当你在编写自定义注解时,@Target、@Retention、@Documented 和 @Inherited 是四个你可能会用到的元注解,它们可以帮助你更好地定义和使用注解。

小孔靠得住的博客 2716

java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤

今天我们来讲解一下如何给springboot添加Aop,这个功能在开发中也是会被经常用到的。刨去事务不说,我们也会有很多地方需要自定义aop,例如用户登录信息和权限的获取以及jwt(json web token)签名验证等过程都需要我们使用到自定义aop,那就让我们来聊聊这个aop具体是做什么的以及具体怎么使用吧。 AOP简介 AOP(Aspect Oriented Programming)即面

beyondLi71的博客 6221

SpringBoot AOP实战:注解、自定义注解与鉴权案例

本文还有配套的精品资源,点击获取 简介:SpringBoot AOP是实现横切关注点的有效方法,如日志记录、事务管理和权限验证。本教程将通过多种注解和自定义注解的使用案例,深入探讨SpringBoot AOP的实战应用。从基础的切面类和切点表达式,到自定义注解的创建与处理,以及使用Spring Security进行权限验证,本教程旨在帮助开发者掌握AOP的核心概念,并通过下...

weixin_35835018的博客 1469

SpringBoot自定义注解使用AOP实现请求参数解密以及响应数据加密

SpringBoot自定义注解使用AOP实现请求参数解密以及响应数据加密 一、前言 本篇文章将依托与SpringBoot平台,自定义注解用来标识接口请求是否实现加密解密。使用AOP切面来具体操作解密加密,实现对源代码的低耦合,不在原基础上做很大的改动。 本篇文章的所有示例,都上传到我的github中,欢迎大家拉取测试,欢迎star github 实现要求: 自定义一个注解@Secret,用来...

Agger的博客 6868

SpringBoot基于注解实现Aop

在SpringBoot中演示实现了aop的使用方法,包括pointcut和Advice

期货缠论实战:文华财经笔中枢指标公式解析与博易大师应用指南

本文深入解析期货缠论实战中的文华财经笔中枢指标公式及其在博易大师平台的应用技巧。详细介绍了笔中枢指标的核心逻辑、公式拆解、参数设置及多周期联合作战策略,帮助交易者提升市场分析能力与交易胜率。特别适合期货交易者学习缠论指标的实际应用。

weixin_42522552的博客 357

Springboot如何使用注解实现AOP

文章目录前言一、AOP是什么?二、代理模式1.什么是代理2.静态代理3.动态代理三,springboot中如何使用注解来实现aop1.自定义注解2.切面类总结 前言 在一些场景下,我们需要在执行某些方法或者某些代码时,预先执行或者后置执行特定的一些方法,但是我们不想在代码里复写,我们不想在代码里将这些指定的方法写入进去,而是通过抽离的方式,这种场景下aop切面可以帮助我们完成这种操作 提示:以下是本篇文章正文内容,下面案例可供参考 一、AOP是什么? spring两大核心包括ioc和aop,ioc..

qq_48329942的博客 8981

寒武纪AI芯片业务解析:从云端到边缘,如何布局智能计算未来?

本文深入解析了寒武纪在AI芯片领域的业务布局,重点探讨了其从云端到边缘的智能计算战略。文章分析了寒武纪云端“思元”系列芯片如何作为数据中心的高性能计算基石,以及思元220等边缘芯片如何满足碎片化场景的低功耗实时处理需求。同时,也阐述了其IP授权业务模式与技术生态构建,揭示了寒武纪在激烈市场竞争中,通过软硬件全栈方案布局智能计算未来的核心路径。

weixin_29271053的博客 404

springboot 自定义注解使用AOP实现请求参数解密以及响应数据加密

一、前言 本篇文章将依托与SpringBoot平台,自定义注解用来标识接口请求是否实现加密解密。使用AOP切面来具体操作解密加密,实现对源代码的低耦合,不在原基础上做很大的改动。 本篇文章的所有示例,都上传到我的github中,欢迎大家拉取测试,欢迎stargithub 实现要求: 自定义一个注解@Secret,用来标识需要实现加密解密 作用在Controller类上,表示此Controller类的所有接口都实现加密解密 作用来单一方法上,表示此接口方法需要实现加密解密 使用AOP.

8209

实战演练 | ABAQUS显式动力学分析在金属切削仿真中的应用

本文详细介绍了如何利用ABAQUS显式动力学分析进行金属切削过程的二维仿真。通过从零开始的完整流程,包括几何建模、材料本构与失效定义、网格划分、接触设置、边界条件施加,到结果后处理与切削力提取,为工程师和研究人员提供了实用的仿真方法,以优化刀具设计和加工工艺。

purple的博客 930

深入解析STM32F103R6的USB OTG_FS双重角色设备(DRD)设计与应用

本文深入解析了STM32F103R6的USB OTG_FS双重角色设备(DRD)设计与应用。详细阐述了其作为USB主机和设备双重角色的硬件设计要点,包括VBUS电源管理与ID引脚配置,并提供了设备模式(如虚拟串口CDC)与主机模式(如读取U盘文件)的软件实现实战指南,帮助开发者充分发挥该芯片的OTG潜力。

weixin_29195615的博客 265

Java AOP自定义注解

主要介绍在Springboot中如何实现一个自定义注解,通过自定义注解去实现一些定制化的需求。

程序员小杨哥的博客 4129

手把手教你用GPIO模拟MDIO时序,搞定Linux下那些‘不听话’的PHY芯片

本文详细介绍了如何利用Linux内核的`virtual,mdio-gpio`驱动,通过GPIO模拟MDIO时序来解决特殊PHY芯片的驱动调试问题。从硬件准备、设备树配置到驱动实现,提供了完整的解决方案和实战案例,帮助开发者应对非标准时序的PHY芯片挑战。

weixin_29188043的博客 270

springboot通过自定义注解实现AOP角色权限校验

这里有几个地方需要注意:1.自定义注解 2.aop,拦截器,过滤器的区别? 1.在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。 元注解:   元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:1.@Target,2.@Rete...

万米高空的博客 6429

揭秘CAS:深入理解与应用解析

在并发编程中,Compare-And-Swap(CAS)机制作为一种无锁算法,凭借其高效性和避免线程阻塞的优势,受到广泛关注。CAS不仅在底层实现上有着重要地位,还在实际开发中发挥着关键作用。本文将从CAS的工作原理、在Java中的实现及其增强机制来回顾和加深理解一下CAS。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 85万+

【STM32实物】基于STM32+ESP32+手机APP设计的智能宠物喂食系统

本文以STM32单片机为主控MCU,配有压力传感器、温湿度传感器、光照强度传感器、蜂鸣器等,设计了一款可以远程控制的宠物智能喂食系统。用户可以通过APP下达指令,控制宠物的喂食。每天可以根据设置的数据进行精准喂食,成本相对较低的宠物喂食装置。该装置使用步进电机控制投食仓门的开闭,通过压力传感器和时钟系统控制每日的投喂量和投喂时间。每次投食后蜂鸣器会提醒宠物进食,树立每日定点进食的习惯。经测试得出,该设备确实能实现每日定时定量投喂。系统整体运行顺畅,所有预期功能得以实现。它非常适合解决宠物主人不在家时影响宠物

嵌入式阿齐Archie 2万+

SpringBoot 利用自定义注解实现AOP拦截控制

在 SpringBoot 中,利用 AOP 实现拦截控制的方法有很多,个人觉得相对比较简洁、比较简单的方式是通过自定义注解实现拦截控制。这种实现方式只需要预先定义一个新的注解,并实现拦截控制的具体业务逻辑,当我们想要拦截某一个方法进行控制时,只需要在方法前加上该注解,通常不需要做过多的调整。在实际工程应用中,这种实现方式确实有效提升了开发效率。 AOP 的基本概念 AOP 是 Aspect-oriented Programming 的缩写,常译作”面向切面编程“,通俗理解就是在程序运行的链路中,从某一个横切

Ulrich蚊子Blog 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

springboot Aop配置,并使用自定义注解annotation,并且拦截service层

前言 用Spring Boot的AOP来简化处理自定义注解,并将通过实现一个简单的方法执行判断节点是否开始的状态示列源码。 AOP概念 面向侧面的程序设计(aspect-oriented programming,AOP,又译作面向方面的程序设计、观点导向编程、剖面导向程序设计)是计算机科学中的一个术语,指一种程序设计范型。该范型以一种称为侧面(aspect,又译作方面)的语言构造为基础,侧面...

yf_imiss的博客 5788

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringBoot实战(六)自定义注解 + AOP 记录接口访问日志

目录一、AOP的简单介绍1. AOP是什么2. AOP能做什么3. 切面执行顺序4. AOP注解二、实战代码1. 依赖引入2. AOP示例3. 定义接口,进行测试4. 源码地址 一、AOP的简单介绍 1. AOP是什么 AOP(Aspect Oriented Programming)–面向切面编程 通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 实现方式:JDK动态代理、CGLIB代理。前者基于接口,后者基于子类。 2. AOP能做什么 统计接口

ACGkaka的博客 4335

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: SpringBoot实战笔记:01_Spring中的Java配置
下一篇: SpringBoot实战笔记:03_Spring常用配置
george_zyf
博客等级 码龄11年 132粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值