在Spring AOP中,可以使用注解來定義切面和切點。
<aop:aspectj-autoproxy />
@Aspect
注解標記:@Aspect
public class LoggingAspect {
// ...
}
@Pointcut
注解標記:@Pointcut("execution(* com.example.service.*.*(..))")
public void serviceMethods() {}
@Before
、@After
、@Around
等注解標記:@Before("serviceMethods()")
public void beforeAdvice() {
// 在目標方法執行前執行的邏輯
}
@After("serviceMethods()")
public void afterAdvice() {
// 在目標方法執行后執行的邏輯
}
@Around("serviceMethods()")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
// 在目標方法執行前后執行的邏輯
Object result = joinPoint.proceed();
// 在目標方法執行后執行的邏輯
return result;
}
@Service
public class UserService {
@Loggable
public void addUser(User user) {
// ...
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Loggable {
}
以上就是使用注解的方式來使用Spring AOP的基本步驟。在實際使用中,可以根據具體需求選擇不同的注解和切點表達式,來定義切面和切點。