首页 > 其他分享 >AOP

AOP

时间:2025-01-22 17:56:08浏览次数:1  
标签:aop joinPoint System AOP println public out

  1. 引入依赖
<dependencies>
    <!-- Spring AOP 依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>5.3.10</version>
    </dependency>
    <!-- AspectJ 依赖 -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.7</version>
    </dependency>
</dependencies>
  1. 创建业务服务类
    创建一个简单的业务服务类 MyService,其中包含一个方法 performTask,这个方法将在 AOP 中被拦截。
@Service
public class MyService {

    public void performTask() {
        System.out.println("Performing task...");
    }
}
  1. 创建切面类
    创建一个切面类 LoggingAspect,在这个类中定义前置通知和环绕通知。
@Aspect
@Component
public class LoggingAspect {

    // 前置通知
    @Before("execution(* com.example.aop.MyService.performTask(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("Before " + joinPoint.getSignature().getName() + " method");
    }

    // 环绕通知
    @Around("execution(* com.example.aop.MyService.performTask(..))")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Around before " + joinPoint.getSignature().getName() + " method");
        try {
            // 执行目标方法
            Object result = joinPoint.proceed();
            System.out.println("Around after " + joinPoint.getSignature().getName() + " method");
            return result;
        } catch (Exception e) {
            System.out.println("Exception occurred: " + e.getMessage());
            throw e;
        }
    }
}
  1. 配置 Spring 应用程序
    Spring 自动扫描组件并启用 AOP,创建一个配置类 AppConfig
@Configuration
@ComponentScan(basePackages = "com.example.aop")
@EnableAspectJAutoProxy
public class AppConfig {
}

标签:aop,joinPoint,System,AOP,println,public,out
From: https://www.cnblogs.com/wjhfree/p/18686534

相关文章

  • 【spring原理】AOP面向切面编程
    Spring中的AOP(Aspect-OrientedProgramming,面向切面编程)是一种通过分离关注点来增强代码模块化的编程范式。在Spring中,AOP允许开发者定义通用的行为(如日志记录、安全性验证、事务管理等),然后以非侵入的方式将这些行为应用到应用程序的特定部分(例如方法或类)上,从而避免代码重......
  • Spring 6 第5章——面向切面:AOP
    搭建子模块——spring6-aop 一、场景模拟(1)声明接口接口代码:publicinterfaceCalculator{intadd(inti,intj);intsub(inti,intj);intmul(inti,intj);intdiv(inti,intj);}如图:(2)创建实现类实现类代码:packagecom.atguigu.spring6.aop.......
  • 你了解什么是AOP吗?它的作用是什么?举个例子
    AOP(AspectOrientedProgramming,面向切面编程)是一种编程范式,它的主要作用是通过预编译方式和运行期间动态代理,实现程序功能的统一维护。AOP是OOP(面向对象编程)的延续,可以弥补OOP的不足,提高程序的可重用性和开发效率。AOP的核心作用包括:降低耦合度:AOP通过对业务逻辑的各个部分进......
  • AOP,初篇
    知识体系        aspectJ是aop最流行的一种实现方式,aspectJ的知识体系大致分为以下四个部分。    静态切面:添加静态属性修改类的实现,继承关系,例如实现某个接口,继承某个对象。    动态切面:3个核心对象,joinpoint,pointcut表达式,advice两种语法:aspec......
  • 赛果公布!有灵AOP平台首届编程挑战赛圆满落幕
    近日,网易伏羲有灵AOP平台首届编程挑战赛顺利落下帷幕。自赛事启动以来,在短短几周的时间里,来自各地的优秀开发者们汇集于此,通过人机协作的形式,完成了多项充满创意和技术深度的任务。此次挑战赛不仅展现了参赛者的卓越编程技能,也体现了AOP(AgentOrientedProgramming)面向智能体编程......
  • Spring AOP
    AOP,面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存、权限控制、限流等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。AOP专业术语切面(Aspect):切面是增强和切点......
  • 百万架构师第十六课:源码分析:Spring 源码分析:手写SpringAOP核心原理|JavaGuide
    已完成SpringIOCSpringDISpringMVC继续完善:SpringAOP的功能,基于SpringIOC和DI去完成未完成:SpringAOP、SpringTransaction、SpringJDBC、自己手写ORM框架。​SpringIOC入口,DispatcherServlet,通过DispatcherServlet启动一个ApplicationContext容......
  • 【Spring Aop】使用全攻略,开启面向切面编程世界的大门
    概述使用AOP(面向切面编程)可以帮助你实现横切关注点(如日志记录、事务管理、权限控制等)的分离,比如你对外提供了一个接口,接口上线后产品又要求需要对接口的出入参做记录,以提供数据支撑供业务分析以及方便问题排查。你想着,这不简单嘛,我只要在接口返回的时候发送一个MQ记录下......
  • 【JAVA编程】通过自定义注解与AOP防止接口重复提交实战
    引言在Web应用开发中,特别是在处理表单提交或API调用时,可能会遇到用户因网络延迟、按钮多次点击等原因导致的重复提交问题。为了解决这一问题,通常的做法是在前端禁用提交按钮,或者在后端使用唯一令牌(Token)机制来确保请求的唯一性。然而,这些方法往往需要针对每个可能的重复提交场景......
  • 定义自己的注解,用aop完成日志操作
    1.引入依赖<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency>2.定义注解类//表示该注解使用的位置TYPE:类,接口FIELD:属性METHOD:方法......