首页 > 其他分享 >基于注解的AOP日志切面控制SpringAOP

基于注解的AOP日志切面控制SpringAOP

时间:2023-09-13 11:34:29浏览次数:47  
标签:info void AspectPointCutTag 切面 AOP SpringAOP public PaasLogger


1.配置注解 (作用于方法上,相当于要告诉aop对哪些方法做切面植入)

import javax.jdo.annotations.Element;
import java.lang.annotation.*;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AspectPointCutTag {
    String name();
}

2.做一个aop切面(就是知道对哪些方法做植入,切面就是植入的内容或者要做的事情方法)

@Aspect
@Component
public class LogAspectWave {

    @Pointcut("@annotation(com.service.example.common.annotation.AspectPointCutTag)")
    public  void annotaionPointCut(){
        PaasLogger.info("开启切面日志记录");
    }

    @Before("annotaionPointCut()")
    public void bofore(JoinPoint joinPoint){
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
        AspectPointCutTag aspectPointCutTag  =  methodSignature.getMethod().getAnnotation(AspectPointCutTag.class);
        PaasLogger.info("前置通知:"+aspectPointCutTag.name());
    }

    @Before("annotaionPointCut()")
    public void after(){


    }
}

3.给方法配置切入点

@Controller
@EnableAspectJAutoProxy
public class ExampleApp {

    @Autowired
    private ExampleService service;

    /**
     * 保存客户订单
     * @param req
     * @return
     */
    @PostMapping("/insert")
   @AspectPointCutTag(name="insetCustomerOrder")
    public void insert(){
        //PaasLogger.info("入参报文:"+ req.toString());
        //TODO 将改为切面日志
        service.createCustomerOrder(req.getBody());
        SaveCustomerOrderRspDTO rspDTO  = new SaveCustomerOrderRspDTO();
        //PaasLogger.info("出参报文:"+ rspDTO.toString());
    }


}

 

标签:info,void,AspectPointCutTag,切面,AOP,SpringAOP,public,PaasLogger
From: https://blog.51cto.com/ratelcloud/7453287

相关文章

  • Spring AOP概念全面解析
    1AOP简介思考:什么是AOP,AOP的作用是什么?1.1AOP简介和作用【理解】AOP(AspectOrientedProgramming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(ObjectOrientedProgramming)面向对象编程作用:简单的说就是在不改变方法源代码的基础上对方法进行功能增强。符合Sprin......
  • Spring - AOP常见面试题
    Spring-AOP推荐阅读:动态代理(JDKProxy&cjlib)AOP(Aspect-OrientedProgramming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维......
  • python flask有像Spring AOP一样 捕获记录操作过程请求和返回
    在PythonFlask中,你可以使用装饰器(decorators)或中间件(middlewares)来实现类似SpringAOP的日志记录功能,以捕获和记录操作过程的请求和返回。一种常见的方法是使用装饰器来包装路由处理函数,在函数执行前后记录相关信息:```pythonfromfunctoolsimportwrapsfromflaskimport......
  • spring中的aop(面向切面编程)需要到导入的包与简单示例
    2023-09-07<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://......
  • C#面向切面编程的框架
    C#类似Java中Spring的实现依赖注入和面向切面编程的框架有很多Unity:Unity是一个轻量级的依赖注入(DI)容器,具有简单易用的特点。它在配置方面较为灵活,适用于小型项目和快速搭建原型。Autofac:Autofac是一个功能丰富的依赖注入(DI)容器,支持更高级的依赖注入功能,如属性注入和构造函......
  • IOC,AOP
    IOC:控制反转,利用反转的机制将对象交给spring容器,由spring负责对象的创建和销毁。IOC的作用:解耦AOP:面向切面编程AOP的作用:在程序运行期间,不修改源码的情况下,动态统一添加功能。如:日志打印,数据采集,事务管理,性能监视AOP常见概念:横切关注点,切面,连接点,切入点,消息通知横切关注点:......
  • javaee spring 测试aop 切面
    切面类packagecom.test.advice;importorg.aspectj.lang.ProceedingJoinPoint;//增强类publicclassMyAdvice{//将这个增强方法切入到service层的add方法前publicvoidbefore(){System.out.println("添加用户之前");}}目标类packag......
  • 【SpringBoot】面向切面编程AOP
    一.基本概念oop:主要以函数或者过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成,主要实现通过继承,多态和封装aop:这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。简单来讲就是方法和方法的关联,将公用代码从核心代码中抽......
  • 学习aop以及nginx
    苍穹外卖第一天搭建前端后端环境先将代码提交到本地然后在git上创建仓库https://gitee.com/lh03062021/sky-take-out.git点击push定义远程仓库把复制好的粘贴上去就可以推送成功了。导入sql文件,编译父项目nginx反向代理,将前端发送的动态请求由nginx转发到后端服务器好......
  • 通过AOP拦截Spring Boot日志并将其存入数据库
    本文分享自华为云社区《SpringBoot入门(23):【实战】通过AOP拦截SpringBoot日志并将其存入数据库》,作者:bug菌。前言在软件开发中,常常需要记录系统运行时的日志。日志记录有助于排查系统问题、优化系统性能、监控操作行为等。本文将介绍如何使用SpringBoot和AOP技术实现拦截系......