- 2024-07-28Java 自定义注解
一、Java 自定义注解的用途、 1、可以记录在特殊方法进行日志记录 2、可以进行 特殊鉴权 如@ValidateRole(“admin") 只有当前用户拥有指定角色时才放行 否则抛自定义异常 无权限 3、可以用于参数 如Controller 方法中的参数进行 参数
- 2024-07-05使用AOP和注解对DTO中的字段进行截断——第一次使用AOP和自定义注解的心得
是骚操作,但是为了应对特殊的需求,实现了通过在方法上应用@TruncateString注解,进入AOP,获得第一个参数中的DTO,然后获取DTO中加了@LimitStringLength注解,将字段修改之后返回。#AOP中要注意的点:AOP由Spring管理,所以要生效的话需要加上@Component注解可以把注解绑定到一个方法上,然后
- 2024-06-10JoinPoint和ProceedingJoinPoint区别
在Java中,JoinPoint和ProceedingJoinPoint是Aspect-OrientedProgramming(AOP)的概念,通常与AspectJ框架或SpringAOP一起使用。JoinPoint表示一个连接点,即程序执行中的一个具体点,如方法调用或异常处理。ProceedingJoinPoint是JoinPoint的一个子接口,它表示一个可以继续执行
- 2024-05-29浅析AOP中的JoinPoint的使用
JoinPoint可以让我们获取到哪些信息JoinPoint接口提供了多个方法,允许我们在切面中获取与连接点(即目标方法执行点)相关的信息。以下是一些常用的方法,以及它们能够提供的信息:getArgs():获取目标方法的参数列表。这些参数是在方法调用时传递给方法的实际参数。getSignature()
- 2024-05-28浅析SpringBoot中的AOP以及自定义注解类
概念说明SpringBoot中的AOP(面向切面编程)是一种编程范式,它允许开发者定义跨多个对象的横切关注点。横切关注点是与业务逻辑无关的功能,如日志记录、安全检查、事务管理等。AOP的主要目的是将横切关注点与业务逻辑分离,提高代码的模块化和可维护性。AOP的核心概念包括:切面(As
- 2024-05-17Use AOP to record system logs
UsingAOPtoRecordSystemLogs:1.CustomAnnotationClassDefineacustomannotationclass:packagecom.java.common.annotion;importjava.lang.annotation.*;@Target({ElementType.METHOD,ElementType.PARAMETER})//Thisannotationappliestomethodsandp
- 2024-04-27Spring(4)-AOP使用细节
有了Spring(3)-AOP快速入手-marigo-博客园的学习,大体知道AOP的使用,接下来我们对AOP的细节进行展开。AOP-切入表达式作用:通过表达式定位一个或者多个连接点连接点可以理解成我们要切入到哪个类的哪个具体方法语法:execution([权限修饰符][返回值类型][简单类名/全类名][
- 2024-04-14【Spring】AOP进阶-JoinPoint和ProceedingJoinPoint详解
2024-04-141.前言在Spring AOP中,JoinPoint和ProceedingJoinPoint都是关键的接口,用于在切面中获取方法的相关信息以及控制方法的执行。它们的主要区别在于它们在AOP通知中的使用方式和功能。2.JoinPoint简介Joinpoint是面向切面编程(AOP)中的一个重要概念,指的是在应用程序执行
- 2024-04-10采用自定义注解 和 AOP 完成日志记录
1、声明一个自定义注解@Retention注解包含一个RetentionPolicy类型的属性value,用于指定注解的保留策略,常用的保留策略包括:RetentionPolicy.SOURCE:表示注解仅在源代码中保留,编译器编译时会将其忽略,不会保存在编译后的字节码中。RetentionPolicy.CLASS:表示注解在编译后的
- 2024-03-30JoinPoint 常用的方法
Object[]getArgs:返回目标方法的参数SignaturegetSignature:返回目标方法的签名ObjectgetTarget:返回被织入增强处理的目标对象ObjectgetThis:返回AOP框架为目标对象生成的代理对象*JoinPoint对象用于获取切面对象上下文信息,Aop将连接点的上下文信息封装为JoinPoint对象
- 2024-03-05Java 切入点 JoinPoint的使用,用于拦截方法,与自定义注解
这里的代码案例是外卖系统中,用于统一修改新增和更新内容中的更新时间与更新人内容,根据具体情况,在使用时进行自定义修改就行了第一部分是annotation的,因为是为了自动填充数据准备,所以创建annotation包后,在其中创建了AutoFill的注解类型/***自定义注解,用于标识某个方法需要用
- 2024-02-27数据统计埋点需求
背景随着公司代码的迭代,有一些垃圾代码逻辑冗余在项目中,导致消耗了资源又不好维护。为了保险,需要在线上统计代码使用的频率,剔除无用代码。描述方法便可分为如下几种:对于确定没用的代码,可以先注释掉,并替换为error日志,保证遇到问题及时发现。对疑似无用代码,可以使用统计方法调
- 2024-01-27SpringAOP
一、AOP介绍AOP(面向切面编程)是一种编程思想,底层逻辑是动态代理。什么是动态代理呢?动态代理就是不改变源码的情况下,对目标方法进行增强。传统的动态代理太过繁琐,因此SpringAOP对其进行了一系列简化,使得原本繁琐的代码变得精简,同时使用也更加灵活。二、AOP使用案例在开发过程
- 2024-01-16AOP
本质:AspectOrientedProgramming,面向切面编程;是OOP的一种延伸,降低系统耦合性,提高了代码的利用率;底层基于动态代理(JDK动态代理和CGLib动态代理)和动态字节码技术来实现;作用:在不修改原有业务代码的情况下添加额外的功能,从而达到将功能性需求与非功能性需求分离的效果;示例:日志
- 2024-01-15切点打印:被切的类名、方法名、方法参数值、方法参数类型等
privatevoidprintMethod(JoinPointjoinPoint,Stringname)throwsNoSuchMethodException{MethodSignaturesignature=(MethodSignature)joinPoint.getSignature();Class<?>clazz=joinPoint.getTarget().getClass();Methodmethod=clazz.ge
- 2023-12-31Spring AOP快速上手
什么是AOPAOP全称是aspect-orientedprograming面向切面编程。用于解决横向关注点的问题,横向关注点是指多个模块或者模块中的多个功能需要共享的功能,如日志记录、事务管理、安全控制等等。即重复性的代码抽象出来,形成可复用的代码模块。AOP的核心术语Joinpoint(连接点):程序执
- 2023-12-14Spring系列:基于Spring-AOP和Spring-Aspects实现AOP切面编程
目录一、概念及相关术语概念相关术语①横切关注点②通知(增强)③切面④目标⑤代理⑥连接点⑦切入点作用二、基于注解的AOP技术说明准备工作创建切面类并配置各种通知切入点表达式语法重用切入点表达式获取通知的相关信息环绕通知切面的优先级三、基于XML的AOP准备工作实现一、概念
- 2023-08-09java笔记_12_自定义注解
1、@interface用于声明注解,参数只用八种基本数据类型和四种数据类型(基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations),如果只有一个参数成员,最好把参数名称设为"value"2、@Target说明了Annotation所修饰的对象范围,
- 2023-08-05day125-aop
aop简介AOP(AspectOrientedProgramming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。相关术语横切关注点从每个方法中抽取
- 2023-06-25springboot加切面日志
packageorg.rest.util;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionP
- 2023-06-24springboot 通过aop切面的方式打印controller 出入参数
pom文件引入<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>定义切面类AspectConfigimportcom.alibaba.fastjson.JSONObject;importlombok.extern.slf4j.
- 2023-06-22spring aop
切面表达式execution表达式基本语法格式为:execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)除了返回类型模式,方法名模式和参数模式外,其它项都是可选的。例如://com下所有方法@Pointcut("execution(*com..*.*(..))") @Pointcut("execution(public*cn.
- 2023-06-14SpringBoot使用自定义日志注解,配置切面
1.使用技巧以下是需要注意的部分:在环绕通知中使用ProceedingJoinPoint,控制目标方法的运行。在其他通知类型中使用JoinPoint。如果使用JoinPoint则必须位于参数的第一位。ProceedingJoinPoint中有特殊的方法proceed()。当有多个切面时,使用@Order(11)来指定注解的优先级。
- 2023-06-143. AOP
1.代理模式1.1概念①介绍二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来——解耦。调用目标方法时先调
- 2023-06-08Swagger 自定义输出文档
Swagger作为Java开发中常用的接口文档生成组件,绝大部分情况下都可以满足我们的业务需求。但有些时候依然有些不足,比如针对系统中某些特殊接口需要作出一些增强。我自己在使用Swagger时候遇到需要将base_path消除并直接拼接到接口路径上的情形。一共寻找到两种方式