AOP是面向切面编程,面向切面思想就是让我们把程序想象成一条一条管道连接起来的大管道,而AOP就是在管道和管道之间的过滤网,能够在不影响管道的情况下对管道中传输的数据进行记录,修改。 使用AOP我们可以很方便地进行操作日志记录,性能日志记录,请求日志记录,事务操作,安全管理等。这么说可能很抽象,再详细点说就是各种...
*/publicclassCrmLogMessage{privateInteger logid;//日志idprivateString UserName;//管理员姓名privateString UserRole;//管理员角色privateString Content;//日志描述privateString Remarks;//参数集合privateString TableName;//表格名称privateString DateTime;//操作时间privateString resultValue;//返回值privateString ip...
通过@Around注解使用。 1.4 AOP底层原理 它是基于代理设计模式,而代理设计模式又分为静态代理和动态代理,静态代理比较简单就是一个接口,分别由一个真实实现和一个代理实现,而动态代理分为基于接口的JDK动态代理和基于类的CGLIB的动态代理。 二、自定义注解 下面就以我们实际开发为例,我们先需要给每个接口加上注解,并...
*@desc自定义日志切面 */@Aspect@Component@Slf4jpublicclassMyLogAspect{@AutowiredprivateOperationLogRepositoryoperationLogRepository;/** * 切点 */@Pointcut("@annotation(com.example.myspringboot.annotation.MyLog)")privatevoidmyLogPointCut(){}@Around("myLogPointCut()")publicvoidaround(ProceedingJoinPointjoinPo...
在企业应用开发中,操作日志记录是确保系统安全性、可追溯性以及调试分析的重要手段之一。通过记录用户的操作行为,不仅可以帮助开发者快速定位问题,还能满足审计和合规需求。本文旨在探讨如何在SpringBoot应用程序中通过AOP(面向切面编程)和自定义注解实现操作日志记录,并将日志存储到数据库中。
* 日志注解 */ @Target(ElementType.METHOD)//注解使用在方法上 @Retention(RetentionPolicy.RUNTIME)//注解运行有效 public @interface LogAnno { String operateDesc();//操作描述 } 1. 2. 3. 4. 5. 6. 7. 8. 提示:日志注解可以使用在Controller或serviceImpl上,这里选择用在serviceImpl上,见下面代码。
我们可以使用 AOP 来拦截注解实现业务日志记录功能。具体实现过程如下:1. 定义一个注解 `@Log`,用来标注需要记录日志的方法。@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Log {String value() default "";} 2. 编写一个切面类 `LogAspect`,用来拦截被 `@Log` 注解标注的...
本文主要记录如何使用注解+aop切面+异步监听的方式来实现日志记录功能。 主要记录的信息有: 操作人,操作IP,方法名,参数,消耗时间,日志类型,操作类型(操作日志和异常日志)以及增删改查记录,操作时间等。 主要流程: AOP切面得到请求数据 -> 发布监听事件 -> 异步监听日志入库 ...
这种使用注解和切面编程,记录接口请求参数和返回值的功能,因为使用起来特别方便,而且代码侵入性又特别小,所以在实际项目中基本上都会使用,而最常见的场景就是日志、监控打点,异常收口。 关于自定义注解+AOP实现记录日志功能就分享到这里,期待能够给有缘的同学带来一些启发和帮助。