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