Spring Boot 项目实现 Spring AOP

【注】实现在SpringBoot项目中,同时给两个类的方法添加AOP前置通知

1、创建一个SpringBoot项目

2、创建两个目标类和方法

package com.tqazy.learn_spring_project.spring_aop;

import org.springframework.stereotype.Service;

/**
 * @ClassName SpringAopUserService
 * @Description 用户逻辑类
 * @Author 散场前的温柔
 * @Date 2023/8/13 19:56
 * @Version 1.0
 */
@Service
public class SpringAopUserService {

    public void addUser(String userName) {
        System.out.println("本次新增用户:" + userName);
    }

    public void addUser() {
        System.out.println("本次新增用户:默认用户");
    }
}
package com.tqazy.learn_spring_project.spring_aop;

import org.springframework.stereotype.Service;

/**
 * @ClassName SpringAopUserService
 * @Description 订单逻辑类
 * @Author 散场前的温柔
 * @Date 2023/8/13 19:56
 * @Version 1.0
 */
@Service
public class SpringAopOrderService {

    public void addOrder(String orderNo) {
        System.out.println("本次新增订单:" + orderNo);
    }

    public void addOrder() {
        System.out.println("本次新增订单:No0001");
    }
}

3、创建一个日志切面类

package com.tqazy.learn_spring_project.spring_aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * @ClassName LogAspect
 * @Description 日志切面类
 * @Author 散场前的温柔
 * @Date 2023/8/13 19:58
 * @Version 1.0
 */
@Aspect
@Component
public class LogAspect {

    @Before("execution(* com.tqazy.learn_spring_project.spring_aop.*Service.add*(..))")
    public void before() {
        System.out.println("日志:添加方法开始!");
    }

    @After("execution(* com.tqazy.learn_spring_project.spring_aop.*Service.add*(..))")
    public void after() {
        System.out.println("日志:添加方法完成!");
    }
}

【注1】:*Service匹配SpringAopOrderServiceSpringAopUserService
【注2】:add*(..)是为了匹配方法名,* (..)是为了匹配方法的任意参数(这里的execution(后的*)

4、创建一个调用类

package com.tqazy.learn_spring_project.spring_aop;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @ClassName SpringAopTestController
 * @Description 调用类
 * @Author 散场前的温柔
 * @Date 2023/8/13 20:02
 * @Version 1.0
 */
@RestController
@RequestMapping("/aop")
public class SpringAopTestController {

    @Resource
    private SpringAopUserService userService;

    @Resource
    private SpringAopOrderService orderService;

    @GetMapping("/testMethod")
    public void testMethod() {
        userService.addUser();
        userService.addUser("指定用户");
        orderService.addOrder();
        orderService.addOrder("No0002");
    }
}

5、运行项目

  • 启动项目成功
  • 浏览器访问http://localhost:8080/aop/testMethod
  • 编辑器控制台就会打印内容

Spring Boot 项目实现 Spring AOP_第1张图片
完成实现!

你可能感兴趣的:(Spring,Framework,spring,boot,spring,java)