AOP)是一种编程范式,旨在通过将横切关注点从应用程序的核心业务逻辑中分离出来,以提高代码的模块性、可维护性和可重用性。在AOP中,横切关注点是那些应用程序中多个模块共同需要的功能,如日志记录、事务管理、安全控制等。
AOP中的一些重要概念和术语包括:
-
Aspect(切面):一个横切关注点的模块化实现,它定义了在何处以及如何应用横切关注点。
-
Join Point(连接点) :在应用程序执行过程中能够
插入切面的点,例如方法调用、异常处理等。 -
Advice(通知):切面在连接点上执行的操作,包括前置通知(Before)、后置通知(After)、环绕通知(Around)等。
-
Pointcut(切点):定义了哪些连接点将会被切面影响,是连接点的集合。
-
Target Object(目标对象):被一个或多个切面通知的对象,通常是应用程序中的业务对象。
代码如下:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.MyService.*(..))")
public void beforeMethodExecution() {
System.out.println("Before method execution: Logging...");
}
}
import org.springframework.stereotype.Service;
@Service
public class MyService {
public void doSomething() {
System.out.println("Doing something...");
}
}
LoggingAspect类使用@Aspect注解标记为一个切面,并使用@Before注解定义了一个前置通知,在MyService类的所有方法执行前记录日志。通过AspectJ的切点表达式(execution(* com.example.MyService.*(..))),指定了切点为MyService类中的所有方法。
原文链接: https://blog.csdn.net/2401_82884096/article/details/137868346