searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

spring aop 的使用

2023-07-26 03:48:20
6
0

一、基本概念

     Spring AOP (Aspect-Oriented Programming) 是基于面向切面编程的一个模块,可以实现在程序中进行横切关注点的模块化开发。使用Spring AOP可以将一些重复的、与核心业务逻辑无关的功能,如日志记录、性能统计、安全性检查等,通过切面的方式进行统一管理。以下是使用Spring AOP的步骤:

      1、导入Spring AOP的依赖:在项目的pom.xml文件中添加Spring AOP的相关依赖。

      2、创建切面类:切面类是一个普通的Java类,其中包含了需要在目标方法执行前、执行后或异常抛出时执行的逻辑代码。切面类需要使用@Aspect注解进行标注。

      3、定义切点:切点是一个表达式,用于匹配需要被切入的目标方法。可以使用@Pointcut注解定义切点表达式。

      4、编写通知方法:通知方法是切面类中具体执行逻辑的方法。通知方法需要使用@Before@After@AfterReturning@AfterThrowing等注解来标注,分别表示在目标方法执行前、执行后、执行成功返回后、抛出异常时执行。

      5、配置AOP:在Spring的配置文件中配置AOP,将切面类和切点等信息进行配置。

      6、测试AOP:编写测试类,调用目标方法,触发AOP的切面逻辑。

通过以上步骤,就可以使用Spring AOP来实现横切关注点的模块化开发

二、使用

    1、导入Spring AOP的依赖:在项目的pom.xml文件中添加Spring AOP的相关依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

    2、创建切面类:创建一个Java类,该类将包含切面逻辑。使用@Aspect注解将该类标记为切面类。

@Aspect
@Component
public class LoggingAspect {
    // 切点和通知方法将在接下来的步骤中定义
}

  3、定义切点:使用@Pointcut注解定义切点表达式来匹配需要被切入的目标方法。切点表达式可以使用AspectJ语法来进行匹配。

@Pointcut("execution(* com.example.service.*.*(..))")
public void serviceMethods() {}

上述切点表达式匹配了com.example.service包下的所有方法 

4、 编写通知方法:在切面类中编写通知方法来定义切面逻辑。通知方法需要使用@Before@After@AfterReturning@AfterThrowing等注解来标注。

@Before("serviceMethods()")
public void beforeAdvice(JoinPoint joinPoint) {
    // 在目标方法执行前执行的逻辑
    System.out.println("Before method: " + joinPoint.getSignature().getName());
}

@After("serviceMethods()")
public void afterAdvice(JoinPoint joinPoint) {
    // 在目标方法执行后执行的逻辑
    System.out.println("After method: " + joinPoint.getSignature().getName());
}

上述示例中,@Before注解表示在切点匹配的方法执行前执行通知方法,@After注解表示在切点匹配的方法执行后执行通知方法。

5、配置AOP:在Spring的配置文件中配置AOP,将切面类和切点等信息进行配置。例如,在Spring Boot中可以通过注解@EnableAspectJAutoProxy来启用AOP功能。

@SpringBootApplication
@EnableAspectJAutoProxy
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

6、测试AOP:编写一个测试类,调用目标方法来触发AOP的切面逻辑。

@Service
public class MyService {
    public void doSomething() {
        System.out.println("Doing something...");
    }
}

@RestController
public class MyController {
    @Autowired
    private MyService myService;

    @GetMapping("/test")
    public void testAOP() {
        myService.doSomething();
    }
}

运行上述代码,访问/test接口时,会触发MyService中的doSomething()方法,并同时触发切面类LoggingAspect中的切面逻辑。

通过以上步骤,就可以使用Spring AOP来实现横切关注点的模块化开发。根据实际需求,可以在切面类中编写不同类型的通知方法来实现不同的切面逻辑。

0条评论
作者已关闭评论
meijing
3文章数
0粉丝数
meijing
3 文章 | 0 粉丝
meijing
3文章数
0粉丝数
meijing
3 文章 | 0 粉丝
原创

spring aop 的使用

2023-07-26 03:48:20
6
0

一、基本概念

     Spring AOP (Aspect-Oriented Programming) 是基于面向切面编程的一个模块,可以实现在程序中进行横切关注点的模块化开发。使用Spring AOP可以将一些重复的、与核心业务逻辑无关的功能,如日志记录、性能统计、安全性检查等,通过切面的方式进行统一管理。以下是使用Spring AOP的步骤:

      1、导入Spring AOP的依赖:在项目的pom.xml文件中添加Spring AOP的相关依赖。

      2、创建切面类:切面类是一个普通的Java类,其中包含了需要在目标方法执行前、执行后或异常抛出时执行的逻辑代码。切面类需要使用@Aspect注解进行标注。

      3、定义切点:切点是一个表达式,用于匹配需要被切入的目标方法。可以使用@Pointcut注解定义切点表达式。

      4、编写通知方法:通知方法是切面类中具体执行逻辑的方法。通知方法需要使用@Before@After@AfterReturning@AfterThrowing等注解来标注,分别表示在目标方法执行前、执行后、执行成功返回后、抛出异常时执行。

      5、配置AOP:在Spring的配置文件中配置AOP,将切面类和切点等信息进行配置。

      6、测试AOP:编写测试类,调用目标方法,触发AOP的切面逻辑。

通过以上步骤,就可以使用Spring AOP来实现横切关注点的模块化开发

二、使用

    1、导入Spring AOP的依赖:在项目的pom.xml文件中添加Spring AOP的相关依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

    2、创建切面类:创建一个Java类,该类将包含切面逻辑。使用@Aspect注解将该类标记为切面类。

@Aspect
@Component
public class LoggingAspect {
    // 切点和通知方法将在接下来的步骤中定义
}

  3、定义切点:使用@Pointcut注解定义切点表达式来匹配需要被切入的目标方法。切点表达式可以使用AspectJ语法来进行匹配。

@Pointcut("execution(* com.example.service.*.*(..))")
public void serviceMethods() {}

上述切点表达式匹配了com.example.service包下的所有方法 

4、 编写通知方法:在切面类中编写通知方法来定义切面逻辑。通知方法需要使用@Before@After@AfterReturning@AfterThrowing等注解来标注。

@Before("serviceMethods()")
public void beforeAdvice(JoinPoint joinPoint) {
    // 在目标方法执行前执行的逻辑
    System.out.println("Before method: " + joinPoint.getSignature().getName());
}

@After("serviceMethods()")
public void afterAdvice(JoinPoint joinPoint) {
    // 在目标方法执行后执行的逻辑
    System.out.println("After method: " + joinPoint.getSignature().getName());
}

上述示例中,@Before注解表示在切点匹配的方法执行前执行通知方法,@After注解表示在切点匹配的方法执行后执行通知方法。

5、配置AOP:在Spring的配置文件中配置AOP,将切面类和切点等信息进行配置。例如,在Spring Boot中可以通过注解@EnableAspectJAutoProxy来启用AOP功能。

@SpringBootApplication
@EnableAspectJAutoProxy
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

6、测试AOP:编写一个测试类,调用目标方法来触发AOP的切面逻辑。

@Service
public class MyService {
    public void doSomething() {
        System.out.println("Doing something...");
    }
}

@RestController
public class MyController {
    @Autowired
    private MyService myService;

    @GetMapping("/test")
    public void testAOP() {
        myService.doSomething();
    }
}

运行上述代码,访问/test接口时,会触发MyService中的doSomething()方法,并同时触发切面类LoggingAspect中的切面逻辑。

通过以上步骤,就可以使用Spring AOP来实现横切关注点的模块化开发。根据实际需求,可以在切面类中编写不同类型的通知方法来实现不同的切面逻辑。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0