Spring Boot AOP Before Advice(Spring Boot AOP 前置通知)

2025年1月17日 | 阅读时长:4分钟

Before advice(前置通知)用于面向切面编程,以实现横切关注点。它是一种在方法执行之前运行通知的通知类型。我们使用 @Before 注解来实现前置通知。

让我们通过一个例子来理解前置通知。

Spring Boot Before Advice Example(Spring Boot 前置通知示例)

步骤1: 打开Spring Initializr http://start.spring.io。

步骤 2: 提供 Group 名称。我们提供的 Group 名称是 com.javatpoint。

步骤 3: 提供 Artifact Id (构件 ID)。 我们提供了 Artifact Id aop-before-advice-example。

步骤 4: 添加 Spring Web(Spring Web) 依赖项。

步骤 5: 点击 Generate 按钮。 当我们点击 Generate 按钮时,它将所有规范包装在一个 jar 文件中,并将其下载到本地系统。

Spring Boot AOP Before Advice

步骤 6: 解压 下载的 jar 文件。

步骤 7: 导入 文件夹,按照以下步骤

File(文件) -> Import(导入) -> Existing Maven Projects(现有 Maven 项目) -> Next(下一步) -> Browse the Folder(浏览文件夹) aop-before-advice-example -> Finish(完成)。

步骤 8: 打开 pom.xml 文件并添加以下 AOP 依赖。 它是面向切面编程的启动器,具有 Spring AOPAspectJ

pom.xml

步骤 9: 打开 AopBeforeAdviceExampleApplication.java 文件并添加注解 @EnableAspectJAutoProxy。

它支持处理使用 AspectJ 的 @Aspect 注解标记的组件。它与 @Configuration 注解一起使用。我们可以使用 proxyTargetClass 属性来控制代理的类型。 它的默认值是 false。

AopBeforeAdviceExampleApplication.java

步骤 10: 创建一个名为 com.javatpoint.model. 的包。

步骤 11: 在包 com.javatpoint.model. 下创建一个模型类。我们创建了一个名为 Employee 的类。 在类中,定义以下内容

  • 定义三个类型为 String 的变量 empId、firstName secondName。
  • 生成 Getters 和 Setters(Getter 和 Setter 方法)。
  • 创建 default(默认)

Employee.java

步骤 12: 创建一个名为 com.javatpoint.controller. 的包。

步骤 13: 在包 com.javatpoint.controller. 下创建一个控制器类。我们创建了一个名为 EmployeeController 的类。

在控制器类中,我们定义了两个映射,一个用于添加员工,另一个用于删除员工。

EmployeeController.java

步骤 14: 创建一个名为 com.javatpoint.service. 的包。

步骤 15: 在包 com.javatpoint.service. 下创建一个服务类。我们创建了一个名为 EmployeeService 的类。

在服务类中,我们定义了两个方法 createEmployeedeleteEmployee。

EmployeeService.java

步骤 16: 创建一个名为 com.javatpoint.aspect. 的包。

步骤 17: 在包 com.javatpoint.aspect. 下创建一个切面类。我们创建了一个名为 EmployeeServiceAspect 的类。

在切面类中,我们定义了前置通知逻辑。

EmployeeServiceAspect.java

在上面的类中

  • execution(expression): 表达式是要应用通知的方法。
  • @Before: 它将一个函数标记为在 PointCut 覆盖的方法之前执行的通知。

创建所有模块后,项目目录如下所示

Spring Boot AOP Before Advice

我们已经设置了所有模块。 现在我们将运行该应用程序。

步骤 18: 打开 AopBeforeAdviceExampleApplication.java 文件并将其作为 Java 应用程序运行。

步骤 19: 打开浏览器并调用以下 URL: https://:8080/add/employee?empId={id}&firstName={fname}&secondName={sname}

在上面的 URL 中,/add/employee 是我们在 Controller 类中创建的映射。我们使用两个分隔符 (?)(&) 来分隔两个值。

Spring Boot AOP Before Advice

在上面的输出中,我们分配了 emId 101,firstName=Tim,secondName=cook。

让我们看一下控制台。我们看到在调用 EmployeeService 类的 createEmployee() 方法之前,EmployeeServiceAspect 类的 beforeAdvice() 方法会调用,如下所示。

Spring Boot AOP Before Advice

类似地,我们也可以通过调用 URL https://:8080/remove/employee?empId=101 来删除员工。它会返回一条消息 Employee removed(员工已删除),如下图所示。

Spring Boot AOP Before Advice

在本节中,我们学习了前置通知的工作原理。在下一节中,我们将学习后置通知的工作原理并在一个应用程序中实现它。