spring aop前置后置实现代码
时间: 2024-09-26 14:16:41 浏览: 43
Spring AOP (Aspect Oriented Programming) 是一种编程范式,通过预编译方式和运行期动态代理实现程序的功能切面,比如日志记录、事务管理等,无需修改核心业务代码。在Spring中,我们可以使用@Aspect注解和@Before, @After等通知注解来实现前置通知(before advice)和后置通知(after advice)。
下面是一个简单的例子:
```java
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.AfterReturning;
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))") // 针对com.example.service包下的所有方法
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("Before method execution: " + joinPoint.getSignature());
// 在这里可以添加额外的操作,如权限检查等
}
@AfterReturning(value = "execution(* com.example.service.*.*(..))", returning = "result") // 执行完方法后执行
public Object afterReturningAdvice(JoinPoint joinPoint, Object result) {
System.out.println("Method executed successfully: " + joinPoint.getSignature() + ", returned value: " + result);
return result; // 如果有返回值,可以在这里处理结果
}
}
```
在这个例子中,`@Before` 注解的 `beforeAdvice` 方法会在目标方法执行之前被调用,而 `@AfterReturning` 注解的 `afterReturningAdvice` 方法则会跟随目标方法的执行并在方法返回后执行。
阅读全文