【JavaEE进阶】 Spring AOP详解
Spring AOP(Aspect-Oriented Programming)是一种将横切关注点与业务逻辑进行分离的技术,可以在不修改原始代码的情况下增加额外的行为。在Spring框架中,AOP主要通过代理模式实现。
以下是Spring AOP的一个简单示例:
- 首先,你需要在Spring配置文件中启用AspectJ支持:
<aop:aspectj-autoproxy proxy-target-class="true"/>
- 创建一个切面类,并使用
@Aspect
注解标记它:
@Aspect
@Component
public class LogAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before method: " + joinPoint.getSignature().getName());
}
@After("execution(* com.example.service.*.*(..))")
public void logAfter(JoinPoint joinPoint) {
System.out.println("After method: " + joinPoint.getSignature().getName());
}
}
在上述代码中,@Before
注解表示在目标方法执行前执行logBefore
方法,而@After
注解表示在目标方法执行后执行logAfter
方法。切点表达式execution(* com.example.service.*.*(..))
用于匹配com.example.service
包下所有类的所有方法。
- 创建一个服务类,并在方法上添加注解:
@Service
public class MyService {
public void doSomething() {
System.out.println("Doing something...");
}
}
当调用doSomething
方法时,LogAspect
中的logBefore
和logAfter
方法会分别在目标方法执行前后被调用。
评论已关闭